我正在关注 Oracle 的 Java 在线教程,并对某行特定代码感到困惑。
我正在查看的示例的完整代码在这里:http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
令我困扰的特定行位于 DataStructure 类的 printEven() 方法中:
DataStructureIterator iterator = this.new EvenIterator();
我不明白为什么接口(interface) DataStructureIterator 被用作迭代器的类型,而我尝试过的实际类型 EvenIterator 工作得同样好并且对我来说更有意义:
EvenIterator iterator = this.new EvenIterator();
最佳答案
只有当您的代码必须有一个EvenIterator
时,它才有意义。
否则应首选更通用的接口(interface),允许您更改底层实现而无需进一步更改代码。
作为一个(有点人为的)具体示例,仅使用 ArrayList
来强制执行恒定时间索引访问可能是有意义的;在这种情况下,您可能希望避免使用更通用的 List
以确保不会破坏应用程序的计时。
关于java - 为什么在创建对象的引用时可以使用接口(interface)作为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742024/