接口仅用来定义类型

Posted lillill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口仅用来定义类型相关的知识,希望对你有一定的参考价值。

当类实现接口时,该接口作为一种类型(type),可以用来引用类的实例。因此,一个类实现了一个接口,因此表明客户端可以如何处理类的实例。为其他目的定义接口是不合适的。

一种失败的接口就是所谓的常量接口(constant interface)。 这样的接口不包含任何方法; 它只包含静态 final 属性,每个输出一个常量。 使用这些常量的类实现接口,以避免需要用类名限定常量名。 这里是一个例子:

public interface PhysicalConstants {
    
    static final double AVOGADROS_NUMBER   = 6.022_140_857e23;

}

  常量接口模式是对接口的糟糕使用。 类在内部使用一些常量,完全属于实现细节。实现一个常量接口会导致这个实现细节泄漏到类的导出 API 中。对类的用户来说,类实现一个常量接口是没有意义的。事实上,它甚至可能使他们感到困惑。更糟糕的是,它代表了一个承诺:如果在将来的版本中修改了类,不再需要使用常量,那么它仍然必须实现接口,以确保二进制兼容性。如果一个非 final 类实现了常量接口,那么它的所有子类的命名空间都会被接口中的常量所污染

以上是关于接口仅用来定义类型的主要内容,如果未能解决你的问题,请参考以下文章

从 Apollo 缓存中读取特定类型的所有片段

Java开发笔记八:函数式接口

37 常用函数式接口

在代码片段中包含类型转换

接口使用实例(自定义类型排序和深浅拷贝)

方法