java - JAVA中将接口(interface)定义为变量类型

标签 java interface

如何将变量类型定义为接口(interface):

List<BigDecimal> filter = new ArrayList<BigDecimal>();

我们不应该按类或原始数据类型定义变量而不是接口(interface),如下所示:

ArrayList<BigDecimal> filter = new ArrayList<BigDecimal>();

它如何接受接口(interface)变量定义?

最佳答案

一般来说,首选对接口(interface)进行编码(您的第一个示例,使用接口(interface)而不是类声明变量)。这样,如果您需要更改为不同的实现,那么这样做很简单 - 您只需更改 new到其他东西,并且没有其他需要改变,因为您编码到接口(interface)

它起作用的原因是 ArrayList<BigDecimal>实现List<BigDecimal> ,因此与其赋值兼容。这意味着声明为 List<BigDecimal> 的变量允许拥有 ArrayList<BigDecimal> 类型的引用分配给它。这是该语言的设计特征。这是接口(interface)(实际上是一般的 OOP)在 Java 中工作方式的基础。

关于java - JAVA中将接口(interface)定义为变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177003/

相关文章:

java - PostgreSQL-错误 : tuple concurrently updated

java - JOOQ 查询层次结构

c# - 参数化一个通用接口(interface) - 创建一个 Dictionary<Type, Interface<T>>?

java - 如何在接口(interface)默认方法中初始化Class<T>?

java - Java 中的 RSA 加密,PHP 中的解密

java - 通过 Scanner 保证整数输入的更简单方法?

Java swing JTable RowFilter 忽略符号

java - 方法帮助-初学者错误

c# - 通用接口(interface)的嵌套契约

c# - 如何在单独的库中声明相同的接口(interface)