Java接口请求方法体

时间:2018-05-24 08:33:08

标签: java methods interface

我已经编写了这个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

通过在方法声明结尾处将分号更改为“{}”,一切似乎都没问题。 但这不是定义接口的方式吗?毕竟,身体的重点是什么。

2 个答案:

答案 0 :(得分:2)

子类不能覆盖/实现static方法。名称传达的是静态的。
因此,在接口中定义static抽象方法是没有意义的(并且在编译时非常不合理),因为没有子类可以实现/覆盖它。
在接口中定义static方法的实现(可能从Java 8开始)或使其成为子类可以实现的实例方法。

答案 1 :(得分:0)

您无法在界面中使用静态方法。静态方法不依赖于实例,因此可以直接从类文件中执行。

更多细节可以在

找到

Why can't I declare static methods in an interface?

虽然您可以使用Java 8

定义默认方法和静态方法