在Java中返回Iterator接口的实例?

时间:2013-09-18 17:13:43

标签: java object interface instance

所以我一直在使用以下代码:

HashSet group = new HashSet();
Iterator iter = group.iterator();

现在,有人可以向我解释这实际上如何编译好吗?

我认为你不能在Java中实例化一个接口。所以看作Iterator是一个接口,那么上面的第二行代码如何创建一个对象namned iter(类型为Iterator),工作正常?

谢谢你们

1 个答案:

答案 0 :(得分:7)

  

我以为你无法在Java中实例化一个接口。

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

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