java - "coding to an interface"的OOP原理?

标签 java arraylist

我在某处读到我们应该像这样多态地实例化 ArrayList:

List myList = new ArrayList();

但是如果我使用

ArrayList myList = new ArrayList(); 

这种方法当我输入myList.(ctrl+space)时可以看到更多的方法

请指导我了解它们之间的差异(优缺点)

最佳答案

通常,您对接口(interface)进行编码的原因是,如果有意义的话,您可以更换稍后使用的具体类。例如,如果您因为发现内存碎片/重新分配问题而需要将 ArrayList 替换为 LinkedList。您只需更改构造对象的行,而不是其他代码,因为您编码为 List 接口(interface),并且这两个具体类都实现了 List

如果您需要使用List接口(interface)上没有的ArrayList方法之一,那么可以更改声明并使用该方法。那么,您只需要意识到,您将代码与特定的具体类 ArrayList 紧密耦合,而不是与广泛实现的接口(interface) List 紧密耦合。类别范围。

您的默认位置应该是向接口(interface)编写代码,因为这可以为您提供最大的灵 active /最小的耦合。但这并不意味着您在需要时不直接使用该类,只是您开始时要尽可能灵活。

关于java - "coding to an interface"的OOP原理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14796478/

相关文章:

java - 如何让一个 Guice 模块使用另一个 Guice 模块?

java - 在抽屉导航项目单击上切换 fragment

java - JEdi​​torPane 不设置任何 HTML

java - 方法未正确打印 ArrayList 内容

java - 低于 19 的较低 API 上的 StandardCharsets.UTF_8

java - Spring 和 jackson (休息): Modify request body before reaching to controller : Add default values to properties if properties are not present in json rq

Java:ArrayList<String> 使用比较器排序(ArrayLists 不存储对象)

Java Android Arraylist字符串到ArrayList自定义类

Java ArrayList 搜索

c# - Arraylist 搜索字符串但没有输出