作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下方法:
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();
那么编译器也可以处理这个问题。令人困惑...
最佳答案
why does java compiler accept both lines
这是为了向后兼容。泛型仅包含在 Java 1.5 中。因此,如果不允许使用原始类型(这就是它们的名称),那么之前的所有代码都将无法编译。然而,即使你被允许,you shouldn't use them in newer code 。无论您在何处使用原始类型,编译器都会给您一个未经检查的警告。
关于java迭代器-为什么泛型类型是可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809091/
我是一名优秀的程序员,十分优秀!