刚才在JDK8API文档中看到了方法选项卡,我不知道为什么接口中有一个实例方法选项卡(比如在javax.swing.Action中),因为接口中的方法中不允许使用静态关键字,因为那样的话,这个方法就是类方法,静态方法,对吧!因此,接口中的每个方法都是一个实例方法,那么为什么在接口中有单独的实例方法和抽象方法呢?
我哪里错了?
发布于 2014-03-20 08:33:10
您对接口的看法是错误的。
在Java 8中,您是接口上的方法
除了默认方法之外,还可以在接口中定义静态方法。(静态方法是与定义它的类相关联的方法,而不是与任何对象关联的方法。)该类的每个实例共享其静态方法。)
JLS§9.4
接口可以声明静态方法,这些方法在不引用特定对象的情况下被调用。
编辑
被问及的评论
静态方法可以在接口上调用,还是只能在实现接口的类上调用?
答案当然是你可以:
//separate file
public interface MyInterface {
static void printMe() {
System.out.println("Thing");
}
}
public static void main(String[] args) throws Exception {
MyInterface.printMe();
}
https://stackoverflow.com/questions/22527335
复制相似问题