为什么此代码中没有类型转换异常?

用户名

这是用Java思考

class Snow {}
class Powder extends Snow {}
class Light extends Powder {}
class Heavy extends Powder {}
class Crusty extends Snow {}
class Slush extends Snow {}

public class AsListInference {
    public static void main(String[] args) {
        //The book says it won't compile, but actually it does.
        List<Snow> snow2 = Arrays.asList(new Light(), new Heavy());
    }
}

这是我的Java环境:

  1. Java版本“ 1.8.0_60”
  2. Java(TM)SE运行时环境(内部版本1.8.0_60-b27)
  3. Java HotSpot(TM)64位服务器VM(内部版本25.60-b23,混合模式)
Tunaki

实际上,这本书是对的。这里的区别是Java版本。

使用Java进行思考的目标是Java 5/6(根据说明)。对于此版本的Java(以及Java 7),此代码段不会使用进行编译javac错误是:

不兼容的类型:java.util.List<Powder>无法转换为java.util.List<Snow>

使用Java 8,可以很好地进行编译:改进了类型推断系统。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当没有浮点数据类型时,为什么此代码会得到浮点异常?

为什么此代码中没有结果?

为什么会出现此“无法转换类型的对象”异常?

为什么在没有类型不匹配错误的情况下编译此代码(C ++ 11)?

为什么此Haskell代码没有耗尽堆?

为什么此Javascript代码没有按顺序执行?

为什么我的选择中没有填充此流星代码?

为什么此C ++代码没有返回数组中每个字符的地址?

为什么此代码在C ++ 17中编译时没有错误?

为什么单击“开始”按钮后主循环(此代码中的“运行”)没有响应?

为什么在运行此代码时没有在蒸气中创建枢轴条目?

为什么我的代码没有捕获到异常?

为什么这个ruby代码没有引发异常?

为什么我的代码中没有这样的元素异常

为什么 Rust 中的原始类型之间没有隐式类型转换(强制)

为什么使用此SQLite代码会收到“无效的强制转换异常”?

可疑的转换在解决方案中没有继承的类型->为什么/以某种方式起作用

为什么会跳过此代码的“标志 5”?为什么 if 语句没有运行?

C ++-为什么在没有明显的构造函数匹配时为什么会编译此代码?

类型'UIGestureRecognizer'的值没有成员'numberOfTapsRequired'为什么为什么会出现此错误?

为什么此程序中没有显示段错误?

为什么此UILabel没有显示在SKScene中?

为什么没有在函数中设置此结构

为什么没有在封闭中捕获异常?

为什么异常没有打印在except块中

为什么此SQL INSERT在没有引发和异常的情况下失败?

此代码的作用是什么?为什么我的闹钟没有停止?

为什么此代码有错误?

为什么此宏没有扩展?