我剛剛讀完Head First Java的第16章,這是關於集合和泛型的使用。在本章最後有一個「編譯器」練習,它提供了9行代碼,挑戰在於說哪一行代碼能夠成功編譯。是給定的代碼行,如下所示: -頭第一個Java,第16章,是編譯器練習查詢
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!
我想知道是否有其他人做過這樣的「編譯器」練習,在完成它時注意到了這個問題,或者如果任何人有任何想法,爲什麼作者會離開解決方案的第四行代碼即使它編譯好。
非常感謝您提供的任何幫助。
第四行是完全正常的,如果這本書說,沒有編譯那麼這就是在書中錯誤。 – Jesper
這正是我的想法,非常感謝您確認我的信仰。我只是想在接受它之前用更多的java程序員來確認它。 – Wes1324