关于java:接口中没有body的静态方法

Static method without body in interface

本问题已经有最佳答案,请猛点这里访问。

我有一个接口:

1
2
3
4
5
6
7
8
public interface Condition {

    boolean check();

    JSONObject toJSON();

    Condition fromJSON();
}

我需要确保,这个接口的每一个实现都会覆盖来自JSON的方法,我需要这个方法是静态的。有什么办法可以做到吗??

我尝试在接口中使该方法静态化,但它不能按我想要的方式工作。

我也不想让它成为抽象类,因为每个实现都有不同的方法功能。

是否还有其他方法可以确保每个实现都有来自JSON的静态方法??


简言之,不。实际上,接口的目的是为了让您能够引用所有以通用的单一名称实现该接口的类,并且仍然确保特定的方法可用。例如,在您的例子中,您可以有一个Condition的数组,然后循环它们,每次调用condition.toJSON()。但是静态方法总是从类名访问的。如果您有一个实现Condition的类,称为RealCondition,并且您想要从JSON构建一个RealCondition,那么您就需要知道您想要的输出对象是RealConditon,因此在通用名称Condition下使用from json方法是没有意义的。