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的静态方法??
- 你为什么一开始就需要静电?
- 离开接口,直接进入抽象类并在各自的类中扩展该类。
- @Shryanshjogi仍然无法确保静态方法存在重写。
- @GiladGreen是因为我希望它从提供的JSON返回对象。但现在我在想,我可以让其他对象为我做这个功能,但没有其他选择吗??
- 静态方法和接口不混合。当您停止并考虑它时,静态方法将只声明一次,这会破坏接口的目的。
- 静态方法作为接口的一部分是没有意义的。我们使用接口来表示"只要一个对象完成了这个契约,我就不管它是什么,我知道我可以和他一起工作"。这是多态性的一部分。对于静态方法,没有对象,因此我们不能多态地使用它们。
简言之,不。实际上,接口的目的是为了让您能够引用所有以通用的单一名称实现该接口的类,并且仍然确保特定的方法可用。例如,在您的例子中,您可以有一个Condition的数组,然后循环它们,每次调用condition.toJSON()。但是静态方法总是从类名访问的。如果您有一个实现Condition的类,称为RealCondition,并且您想要从JSON构建一个RealCondition,那么您就需要知道您想要的输出对象是RealConditon,因此在通用名称Condition下使用from json方法是没有意义的。