我有这门课:
class MyClass<N extends Number> {
N n = (N) (new Integer(8));
}
Run Code Online (Sandbox Code Playgroud)
我想得到这些输出:
System.out.println(new MyClass<Long>().n);
System.out.println(new MyClass<Long>().n.getClass());
Run Code Online (Sandbox Code Playgroud)
第一项System.out.println()陈述的输出:
8
Run Code Online (Sandbox Code Playgroud)输出第二个System.out.println()陈述:
java.lang.ClassCastException: java.lang.Integer (in module: java.base)
cannot be cast to java.lang.Long (in module: java.base)
Run Code Online (Sandbox Code Playgroud)为什么我得到第一个输出?是不是也有演员?为什么我在第二个输出中得到异常?
PS:我使用的是Java 9; 我用JShell尝试了它,我在两个输出上都有一个例外.然后我尝试使用IntelliJ IDE并获得第一个输出,但第二个输出异常.