[英]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编译器接受两行( iter1
和iter2
)? 特别是iter2
对我来说很奇怪。 创建以前的对象(双端队列)时,我需要在两侧指定类型。
反正我放
Deque deque2 = new Deque();
那么编译器也可以。 令人困惑...
为什么Java编译器接受这两行
那是为了向后兼容。 泛型仅包含在Java 1.5中。 因此,如果不允许使用原始类型(也就是原始类型),那么所有先前的代码都将无法编译。 但是,即使被允许, 也不应在较新的代码中使用它们 。 无论您在何处使用原始类型,编译器都会向您提供未经检查的警告 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.