繁体   English   中英

Java接口要求方法主体

[英]Java interface asks for method body

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

通过在方法声明的末尾将分号更改为“ {}”,一切似乎都很好。 但这不是定义接口的方法吗? 身体到底有什么意义呢?

子类不能重写/实现static方法。 顾名思义,它是静态的。
因此在接口中定义static抽象方法是没有意义的(并且在编译时是非法的),因为没有子类可以实现/覆盖它。
在您的接口中定义static方法的实现(自Java 8起可能),或者使其成为子类可以实现的实例方法。

接口中不能有静态方法。 静态方法不依赖于实例,因此可以直接从类文件中执行。

有关更多详细信息,请参见

为什么我不能在接口中声明静态方法?

尽管您可以使用Java 8定义默认方法和静态方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM