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

Reply via email to