2

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

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

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

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

多谢你们

4

1 回答 1

7

我认为您不能在 Java 中实例化接口。

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

该类HashSet定义了一个实现Iterator. 此类的HashSet对象知道它们迭代的对象,并且还提供Iterator接口规定的方法。这种做法在 Java 中很常见:它允许您将实现隐藏在接口后面,迫使您的库程序的用户使用接口。结果变得更易于维护,因为对接口进行编程会降低耦合度。

于 2013-09-18T17:15:27.737 回答