commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LANG-745) StrLookup API confusing
Date Tue, 23 Aug 2011 07:01:31 GMT
StrLookup API confusing
-----------------------

                 Key: LANG-745
                 URL: https://issues.apache.org/jira/browse/LANG-745
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.*
    Affects Versions: 3.0
            Reporter: Etienne Neveu


[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.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message