我在提供程序包的官方文档中找不到此内容 ,streamprovider 是否自动处理它们提供的流的处理,还是必须手动执行此操作?如果是这样,在哪里处理使用流提供程序公开的流的最佳实践是什么?
我刚读完Head First Java的第16章,它是关于集合和泛型的使用.本章末尾有一个"Be be compiler"练习,提供了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>();
Run Code Online (Sandbox Code Playgroud)
解决方案声明第3行,第6行,第7行和第8行将编译但是当我尝试自己编译代码行时,我发现第4行也成功编译.更重要的是,第6行代码依赖于第4行代码编译,因为它引用了第4行的ArrayList!
我想知道是否有其他人做过这个"成为编译器"的练习在完成它时注意到这个问题,或者是否有人可以知道为什么作者会将第四行代码从解决方案中删除,即使它编译精细.
非常感谢您提供的任何帮助.