我已经编写了这个java代码
public interface Sorter {
public static <T extends Comparable<T>> void sort(T[] array);
}
并且编译器向我抛出此错误:
Sorter.java:7: error: missing method body, or declare abstract
public static <T extends Comparable<T>> void sort(T[] array);
^
1 error
通过在方法声明结尾处将分号更改为“{}”,一切似乎都没问题。 但这不是定义接口的方式吗?毕竟,身体的重点是什么。
答案 0 :(得分:2)
子类不能覆盖/实现static
方法。名称传达的是静态的。
因此,在接口中定义static
抽象方法是没有意义的(并且在编译时非常不合理),因为没有子类可以实现/覆盖它。
在接口中定义static
方法的实现(可能从Java 8开始)或使其成为子类可以实现的实例方法。
答案 1 :(得分:0)
您无法在界面中使用静态方法。静态方法不依赖于实例,因此可以直接从类文件中执行。
更多细节可以在
找到Why can't I declare static methods in an interface?
虽然您可以使用Java 8
定义默认方法和静态方法