[Fwd: Code review request: 7072353 JNDI libraries do not build with javac -Xlint:all -Werror]
David.Holmes at oracle.com
Wed Aug 3 20:42:02 PDT 2011
Joe Darcy said the following on 08/04/11 12:33:
> David Holmes wrote:
>>> Using wildcards makes the subtyping work along the type argument axis.
>> So what is the right fix here? To declare the underlying Vector as a
>> Vector<?> and cast it to something concrete when needed? It seems very
>> wrong to me to be inserting raw type casts all through this code.
> It isn't entirely clear to be from a quick inspection of the code what
> the actual type usage is. A writable general Vector should be a
> Vector<Object> and Vector just meant for reading should be a Vector<?>
> (or the equivalent Vector<? extends Object>).
> If the type usage is "a sequence of X's and Y's" where X and Y don't
> have some useful supertype, I would recommend using a somewhat different
> set of data structures, like a list of type-safe heterogeneous
> containers or a list of a new package-level XorY class.
Buried in one of Sasha's emails it says:
"The current code uses it to store Strings and Vector<String>s."
Hence it is declared Vector<Object>.
This is looking to me like code that should not have been generified.
More information about the core-libs-dev