返回Java中迭代器接口的实例?

返回Java中迭代器接口的实例?,java,object,interface,instance,Java,Object,Interface,Instance,因此,我一直在使用以下代码: HashSet group = new HashSet(); Iterator iter = group.iterator(); 现在,有人能给我解释一下这是如何编译的吗 我认为不能用Java实例化接口。既然迭代器是一个接口,那么上面的第二行代码是如何工作的,在这里创建了一个对象名为iter(类型为Iterator)的iter,工作正常吗 谢谢各位 我认为不能用Java实例化接口 你是100%正确的,你不能那样做。但是,您可以实例化实现上述接口的类,这正是grou

因此,我一直在使用以下代码:

HashSet group = new HashSet();
Iterator iter = group.iterator();
现在,有人能给我解释一下这是如何编译的吗

我认为不能用Java实例化接口。既然迭代器是一个接口,那么上面的第二行代码是如何工作的,在这里创建了一个对象名为iter(类型为Iterator)的iter,工作正常吗

谢谢各位

我认为不能用Java实例化接口

你是100%正确的,你不能那样做。但是,您可以实例化实现上述接口的类,这正是
group.iterator()
方法所做的

HashSet
类定义了一个实现
迭代器的内部类。此类的对象知道它们迭代的
HashSet
对象,还提供了
Iterator
接口强制的方法。这种做法在Java中很常见:它允许您将实现隐藏在接口后面,迫使库程序的用户访问接口。结果变得更易于维护,因为对接口编程会减少耦合

我认为不能用Java实例化接口

你是100%正确的,你不能那样做。但是,您可以实例化实现上述接口的类,这正是
group.iterator()
方法所做的


HashSet
类定义了一个实现
迭代器的内部类。此类的对象知道它们迭代的
HashSet
对象,还提供了
Iterator
接口强制的方法。这种做法在Java中很常见:它允许您将实现隐藏在接口后面,迫使库程序的用户访问接口。结果变得更易于维护,因为对接口编程会减少耦合。

赋值运算符
=
与实例化不同。请查看
HashSet#iterator()
的源代码。这里没有实例化任何内容。赋值运算符
=
与实例化不同。看看
HashSet#iterator()
的源代码。这里没有实例化任何内容。