Tag: jshell

Javagenerics:为什么这个输出成为可能?

我有这个class级: class MyClass<N extends Number> { N n = (N) (new Integer(8)); } 我想要得到这些输出: System.out.println(new MyClass<Long>().n); System.out.println(new MyClass<Long>().n.getClass()); 第一个System.out.println()语句的输出: 8 第二个System.out.println()语句的输出: java.lang.ClassCastException: java.lang.Integer (in module: java.base) cannot be cast to java.lang.Long (in module: java.base) 为什么我得到第一个输出? 还有没有演员? 为什么我会在第二个输出中得到exception? PS:我使用Java 9; 我尝试了与JShell,我得到了两个输出exception。 然后我用IntelliJ IDE试了一下,得到了第一个输出,但第二个是exception。