【问题标题】:Returning an instance of the Iterator interface in Java?在 Java 中返回 Iterator 接口的实例?
【发布时间】:2013-09-18 17:13:43
【问题描述】:

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

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

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

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

谢谢大家

【问题讨论】:

  • 赋值运算符=与实例化不同。查看HashSet#iterator()的源代码。
  • 你没有在那里实例化任何东西。

标签: java object interface instance


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-09-20
    • 2019-12-17
    • 2015-12-13
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多