List<? super Number> myNumsContra = new ArrayList<Number>();
myNumsContra.add(2.0F);
myNumsContra.add(2);
myNumsContra.add(2L);
System.out.println(myNumsContra.get(0)); //should throw error
根據仿製藥的逆變規則,上面的get(0)調用應該會引發編譯錯誤。但我沒有看到這種情況發生。有什麼我錯過了嗎?我正在使用Java-8仿製藥java中的變異並不按預期工作
看到的Javadoc您正在使用https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList方法。 html#get(int) –
爲什麼'get(0)'完全拋出一個錯誤? –
正在閱讀這篇文章(https://dzone.com/articles/covariance-and-contravariance),說如果List類已經放置了一個綁定,如?超T,那麼我將無法調用get(0),因爲編譯器會拋出錯誤。 – jtkSource