Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java迭代器作为一个类?_Java_Iterator - Fatal编程技术网

Java迭代器作为一个类?

Java迭代器作为一个类?,java,iterator,Java,Iterator,我对一些看起来很有趣的东西很感兴趣,但这不适合我。我们有一个哈希集和迭代器: Set<String> set = new HashSet<>(); Iterator it = set.iterator(); Set Set=newhashset(); Iterator it=set.Iterator(); 我知道迭代器是如何工作的,但我觉得有些奇怪: 迭代器*it=set.Iterator()** *好的,等等。迭代器是一个接口,而不是一个类。那么 **好的,set是

我对一些看起来很有趣的东西很感兴趣,但这不适合我。我们有一个哈希集和迭代器:

Set<String> set = new HashSet<>();
Iterator it = set.iterator();
Set Set=newhashset();
Iterator it=set.Iterator();
我知道迭代器是如何工作的,但我觉得有些奇怪:

迭代器*it=set.Iterator()**
*好的,等等。迭代器是一个接口,而不是一个类。那么
**好的,set是HashSet类的一个对象,它实现了接口迭代器,所以它实现了void interator(),没有什么异常


但是我们如何从迭代器接口创建迭代器对象呢?

HashSet
中实现
Iterator()
方法会返回一个实现
Iterator
接口的对象。返回的对象是符合
迭代器
规范的某个具体类的实例

首先,实现而不是。这两个接口是相关的,但不同

现在谈谈你的问题。诸如此类

Iterator it = ...;

真正的意思是,
it
是对实现
迭代器接口的类的实例的引用。它不是对“接口”的引用(这样的事情确实没有多大意义,因为你不能实例化接口)。

应该读
Iterator It=set.Iterator()请参阅,谢谢,但是我们如何使迭代器it=。。。我们可以创建字符串、整数对象,但不能创建接口。
HashMap
返回实现
迭代器的具体类的对象,但所述类是隐藏的和/或匿名的。
.iterator()
的“用户”不应该关心任何一种方式。仅供参考,在这里找到了类:谢谢!我试着做一个测试——一个毫无意义的测试,但它是有效的:Comparable test=String.valueOf(1)@RichardK:
String.valueOf(1)
返回实现
Comparable
接口的类的实例。是的,我试图做一些类似于我的问题的事情,只是为了测试complilator或JVM是否会作为例外。它起作用了。