gpt4 book ai didi

java - 为什么在创建对象的引用时可以使用接口(interface)作为类型?

转载 作者:行者123 更新时间:2023-12-01 22:50:56 25 4
gpt4 key购买 nike

我正在关注 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com