False positive compilation of a method reference with type parameters
Ешкеев Никита
kastolom at gmail.com
Mon Jan 6 21:07:56 UTC 2020
Greetings,
I expect the compilation of the following code should fail, but the
compilation is successful:
public class Demo {
static <T> void cons(T c) { System.out.println(c.getClass()); }
static void cons(int var) { System.out.println("int"); }
public static void main(String[] args) {
java.util.function.IntConsumer cons1 = Demo::<String>cons; // <--
the type parameter is ignored
java.util.function.Consumer<Integer> cons2 = Demo::<String>cons; //
<-- wrong type parameter for the consumer
cons1.accept(5);
cons2.accept(5);
}
}
$ javac Demo.java ; java Demo
int
int
I checked for both java-8
$ java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
and java-11:
$ java -version
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10)
OpenJDK 64-Bit Server VM (build 11.0.5+10, mixed mode)
My OS: Arch Linux funcs 5.4.8-arch1-1 #1 SMP PREEMPT Sat, 04 Jan 2020
23:46:18 +0000 x86_64 GNU/Linux
--
Best Regards,
Eshkeev Nikita
More information about the jdk-dev
mailing list