接口只用来定义类型
概述
当一个类实现了一个接口,那么这个接口可以作为一个类型,并作为实现它的类实例的引用。这是定义一个接口的目的。
常量接口
但常量接口比较特殊,不包含方法,仅仅由静态final域组成:
1 | // Constant interface antipattern - do not use! |
但常量接口是比较糟糕的做法,一是因为实现一个接口会导致类的导出API泄露了这个实现细节;二是因为如果我们不再需要这些常量,但为了保证二进制兼容仍然需要实现这个接口,如果它还是个非final类,那么它的所有子类命名空间都会被污染。
总结
接口应该只被用来定义类型,它们不能仅仅用来导出常量。