2012-10-10 20 views
4

我無法理解爲什麼java編譯器允許爲指定了非特定集合的變量指定集合。就像這樣:爲什麼編譯器允許我將一個泛型集合分配給一個聲明爲特定於類的集合的變量?

ArrayList list = new ArrayList(); 
    // Operations on list 
    ArrayList<String> stringList = list; 

有對該各種鑄件的錯誤的潛力,在我看來,它會更有意義,如果編譯器在第一時間做這攔你。

我只問,因爲我很好奇這種有點奇怪的語言方面,我實際上沒有麻煩得到的代碼工作(雖然我可能有一天,當我需要使用ArrayList的所有它的種類)。

+0

可能重複的[在Java 1.5中將非泛型列表類型轉換爲泛型列表類型](http://stackoverflow.com/questions/1498963/converting-non -generic-list-type-to-generic-list-type-in​​-java-1-5) –

+0

查看http://stackoverflow.com/questions/11007723/combining-raw- types-and-generic-methods – Zaki

+0

如果將程序與使用較舊Java版本的應用程序集成或使用較早的第三方API,則此類實現非常必要。 –

回答

6

它只是仿製藥或Java 5

仿製藥,在Java SE 5引進,並自長後收集已運行之前,支持傳統的代碼。所以如果你看到1.5之前的Collection框架,你會看到ArrayList,沒有generic

相關問題