【问题标题】:Why can't an iterator return a concrete data type? [duplicate]为什么迭代器不能返回具体的数据类型? [复制]
【发布时间】:2015-06-10 02:03:15
【问题描述】:

在Java中,为什么迭代器不能返回一个具体的数据类型。 例如:

//access via Iterator
Iterator iterator = queueA.iterator();
while(iterator.hasNext(){
    String element = (String) iterator.next();
}

我必须明确地将其转换为 String。 为什么迭代器不能自动返回String

【问题讨论】:

  • 您编译的 Java 版本是什么? Java 1.5(或 5)及更高版本支持generics,如果您的queueA 的迭代器方法返回一个为String 键入的通用Iterator,您可以执行Iterator<String>
  • 它可以返回一个具体的类型。您似乎错过了将泛型引入 Java 的事实,over ten years ago

标签: java typing


【解决方案1】:

Iterator 是一个泛型类,就像 Queue 一样。你应该这样声明你的迭代器:

Iterator<String> iterator = new queueA.iterator();

【讨论】:

  • 哦,我明白了。那么,我的代码是不好的做法吗?
  • 如果您的 Java 版本是 1.5(添加泛型时)或更高版本,是的,我会这么说。泛型的重点是避免强制转换。
猜你喜欢
  • 1970-01-01
  • 2015-12-13
  • 2011-04-03
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2015-11-14
  • 2019-02-07
相关资源
最近更新 更多