为什么接口不能声明为静态?
答案 0 :(得分:6)
想象一个像蓝图的界面。这没什么具体的。只是一个类,如果坚持(继承)接口,必须实现的蓝图。
Java(iirc)本身没有“静态”类的概念,即“静态”不是类声明中的关键字,就像它在C#中一样。相反,静态类是一个只由静态成员和方法组成的类。
您可能知道,静态成员和静态方法属于该类,而不属于实例。
由于界面只是一个蓝图而不具体,因此“静态”界面毫无意义。
对此的一个警告是内部阶级。
在类声明中,您可以定义一个静态的接口,但我认为它什么都不做。
答案 1 :(得分:2)
首先,因为它没有意义。静态接口如何与非静态接口不同?
其次,他们可以:
public class SomeClass {
static interface StaticInterface {
}
}
答案 2 :(得分:2)
如果你的意思是界面本身:因为没有任何有用的东西,你可以指static interface
如果您指的是接口方法:因为在Java中,静态方法是类的属性,不能以多态方式覆盖或调用。
答案 3 :(得分:0)
Actualy,我在接口中看到了一些无法实现的意义(尤其是在Java 5中引入枚举之前):
public static (or better final?) interface Colors {
public final int RED = 1;
public final int GREEN = 2;
...
}
如果有人知道为什么不应该这样做(假设我们仍然在java_1.4中),请留下评论。