簡體   English   中英

java迭代器-為什么泛型類型是可選的

[英]java iterator - why is generic type optional

我有以下方法:

public Iterator<Item> iterator() {
    return new ListIterator();
}

在以下代碼中使用了它:

Deque<Integer> deque = new Deque<Integer>();
// ...
Iterator<Integer> iter1 = deque.iterator();
Iterator iter2 = deque.iterator();

問題是-為什么Java編譯器接受兩行( iter1iter2 )? 特別是iter2對我來說很奇怪。 創建以前的對象(雙端隊列)時,我需要在兩側指定類型。

反正我放

Deque deque2 = new Deque();

那么編譯器也可以。 令人困惑...

為什么Java編譯器接受這兩行

那是為了向后兼容。 泛型僅包含在Java 1.5中。 因此,如果不允許使用原始類型(也就是原始類型),那么所有先前的代碼都將無法編譯。 但是,即使被允許, 也不應在較新的代碼中使用它們 無論您在何處使用原始類型,編譯器都會向您提供未經檢查的警告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM