use*_*753 1 java interface object instance
所以我一直在使用以下代码:
HashSet group = new HashSet();
Iterator iter = group.iterator();
Run Code Online (Sandbox Code Playgroud)
现在,有人可以向我解释这实际上如何编译好吗?
我以为你不能在Java中实例化一个接口.因此看作Iterator是一个接口,那么上面的第二行代码是如何创建的,其中一个对象namned iter(类型为Iterator)正在创建,工作正常吗?
多谢你们
我以为你不能在Java中实例化一个接口.
你100%正确,你做不到.但是,您可以实例化实现所述接口的类,这正是该group.iterator()方法所做的.
所述HashSet类定义一个内部类实现Iterator.该类的HashSet对象知道它们迭代的对象,并且还提供Iterator接口强制要求的方法.这种做法在Java中很常见:它允许您隐藏接口后面的实现,迫使库程序的用户接口.结果变得更易于维护,因为对接口的编程导致耦合减少.