【问题标题】:Head First Java, Chapter 16, Be The Compiler exercise queryHead First Java,第 16 章,Be The Compiler 练习查询
【发布时间】:2016-09-20 21:04:25
【问题描述】:

我刚刚读完 Head First Java 的第 16 章,内容是关于集合和泛型的使用。本章末尾有一个“成为编译器”练习,给出了 9 行代码,挑战在于说明哪些代码行将成功编译。给出的代码行如下:-

ArrayList<Dog> dogs1 = new ArrayList<Animal>();       
ArrayList<Animal> animals1 = new ArrayList<Dog>();
List<Animal> list = new ArrayList<Animal>();
ArrayList<Dog> dogs = new ArrayList<Dog>();     //The book says this line will not compile
ArrayList<Animal> animals = dogs;
List<Dog> dogList = dogs;
ArrayList<Object> objects = new ArrayList<Object>();
List<Object> ObjList = objects;
ArrayList<Object> objs = new ArrayList<Dog>();

解决方案指出第 3、6、7 和 8 行将编译,但是当我尝试自己编译代码行时,我发现第 4 行也编译成功。更重要的是,第 6 行代码依赖于第 4 行代码编译,因为它引用了第 4 行的 ArrayList!

我想知道是否有其他人在完成这个“成为编译器”练习时注意到了这个问题,或者是否有人知道为什么作者甚至会将第四行代码排除在解决方案之外虽然它编译得很好。

非常感谢您提供的任何帮助。

【问题讨论】:

  • 第 4 行完全没问题,如果书上说不能编译,那就是书上的错误。
  • 这正是我的想法,非常感谢您确认我的信念。我只是想在接受它作为事实之前与更多的 java 程序员确认它。

标签: java arraylist collections


【解决方案1】:

第 4 行应该可以编译。如果您查看 Head First Java 的 Confirmed Errata,它就在那里:

【讨论】:

  • 非常感谢马修。我不知道那个勘误页面存在,它真的很有用,并且回答了我对 Head First Java 中的一些练习和语句的其他一些疑问。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多