hg: jdk7/tl/jdk: 6921740: Eliminate warnings from sun.io converters and allow compiling with JAVAC_MAX_WARNINGS=true

Rémi Forax forax at univ-mlv.fr
Tue Feb 2 13:30:41 UTC 2010


Le 02/02/2010 14:09, Ulf Zibis a écrit :
> Hi,
>
> in most cases you use the empty diamond operator '<>' on 
> instantiation, but not for SoftReference: "new 
> SoftReference<Charset>(cs)" in AbstractCharsetProvider.java
> Why?

SoftReference constructor is SoftReference(T), so there is two ways to 
infer the type argument.

With this code:
SoftReference<Charset> ref = new SoftReference<>(cs);
the type argument can be infered from the lhs of the assignation or
by the declared type of the parameter (here cs).

Knowing that the algorithm for infering the type argument changed and 
will change
(even if its in a backward compatible way), it seems to be a good rational
to only use diamond when the type can be only infered from the lhs type.
At least until, the JLS specifies the algorithm.

>
> I don't see a big advantage for casting to (Class<?>) against (Class) 
> for the cache of Converters.java.

Rules for Class<?> and Class are not the same.
Class should be only used when dealing with legacy code.

[...]
>
> -Ulf

Rémi



More information about the core-libs-dev mailing list