我有这样一门课:
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 (在模块:java.base中)不能强制转换为java.lang.Long (在模块:java.base中)
为什么我会得到第一个输出?不是也有演员阵容吗?为什么我在第二个输出中得到异常?
PS:我使用Java9;我用JShell尝试了一下,在两个输出上都得到了异常。然后我尝试了IntelliJ集成开发环境,得到了第一个输出,但在第二个输出中出现了异常。
https://stackoverflow.com/questions/41504343
复制相似问题