Javac Bug?
Vicente-Arturo Romero-Zaldivar
vicente.romero at oracle.com
Tue May 6 17:40:22 UTC 2014
Hi Anna,
This has been fixed in 8 and 9 dev repos due to [1].
Thanks,
Vicente
[1] https://bugs.openjdk.java.net/browse/JDK-8030741
On 25/04/14 12:33, Anna Kozlova wrote:
> Hi,
>
> This code compiles
>
> class Test {
> {
> putPrefWriter(Short.class, Preferences::putInt);
> }
>
> private static <T> void putPrefWriter(Class<T> type, PrefWriter<T>
> prefWriter) {}
>
> interface PrefWriter<T> {
> void write(Preferences preferences, String key, T value);
> }
> }
>
> but this is not (only parameters order was changed)
>
> class Test {
> {
> putPrefWriter(Preferences::putInt, Short.class);
> }
>
> private static <T> void putPrefWriter(PrefWriter<T> prefWriter, Class<T>
> type) {}
>
> interface PrefWriter<T> {
> void write(Preferences preferences, String key, T value);
> }
> }
>
> As for me, javac should reject both cases due to
> http://docs.oracle.com/javase/specs/jls/se8/html/jls-18.html#jls-18.2.2 (if
> T is a primitive type, let T' be the result of applying boxing conversion
> (§5.1.7) to T. Then the constraint reduces to ‹S = T'›.)
>
> Initially reported as http://youtrack.jetbrains.com/issue/IDEA-124366
>
> Thanks,
> Anna
>
More information about the lambda-dev
mailing list