Uploaded image for project: 'Commons Text'
  1. Commons Text
  2. TEXT-80

StrLookup API confusing

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.3
    • None

    Description

      [bayard: copying this from LANG-564]

      I don't see the point of having a generic type parameter on the StrLookup class, if it's not used anywhere. No method / field in StrLookup references this type parameter. IntelliJ IDEA itself reports a warning: "Type parameter 'V' is never used". Moreover, Java generics are not reified, so there is no reliable way to access the type parameter at runtime (and I don't see the point of doing that anyway...).

      While the Javadoc tries to clarify the purpose of a StrLookup, the unused type parameter is still confusing, and the client code has to un-necessarily specify type parameters. For example, I have to write:

      StrLookup<?> lookup = StrLookup.noneLookup();
      StrLookup<String> lookup2 = StrLookup.systemPropertiesLookup();
      StrLookup<Integer> lookup3 = StrLookup.mapLookup(integerMap);

      instead of

      StrLookup lookup = StrLookup.noneLookup();
      StrLookup lookup2 = StrLookup.systemPropertiesLookup();
      StrLookup lookup3 = StrLookup.mapLookup(integerMap);

      My best guess is that this type parameter was added when commons-lang was generified, because StringLookup.mapLookup() takes a generified Map. Doing this is not really needed, though: we could remove the <V> type parameter everywhere, and replace the StrLookup.mapLookup()'s Map<String, V> with a Map<String, ?> (which is the same as Map<String, ? extends Object>, but shorter).

      I guess it's too late to change this now, due to backward compatibility... But I thought I'd comment just in case it's still possible.

      Attachments

        Issue Links

          Activity

            People

              pascalschumacher Pascal Schumacher
              eneveu Etienne Neveu
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: