繁体   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