首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我不能在Java界面中定义静态方法?

为什么我不能在Java界面中定义静态方法?

提问于 2017-12-25 15:26:38
回答 2关注 0查看 446

这是一个例子:

public interface IXMLizable<T>
{
  static T newInstanceFromXML(Element e);
  Element toXMLElement();
}

当然这是行不通的。但为什么不呢?

其中一个可能的问题是,当你打电话时会发生什么:

IXMLizable.newInstanceFromXML(e);

在这种情况下,我认为它应该只是调用一个空的方法(即{})。所有的子类将被迫实现静态方法,所以在调用静态方法时,它们都会很好。那为什么不可能呢?

编辑:我想我正在寻找比“因为这是Java的方式”更深的答案。

是否有一个特定的技术原因,为什么静态方法不能被覆盖?也就是说,为什么Java的设计者决定让实例方法可以覆盖,而不是静态方法?

编辑:我的设计的问题是我试图使用接口来执行编码约定。

也就是说,界面的目标是双重的:

我希望IXMLizable接口允许我将实现它的类转换为XML元素(使用多态性,工作正常)。

如果有人想要创建一个实现了IXMLizable接口的类的新实例,他们总是会知道会有一个newInstanceFromXML(Element e)静态构造函数。

有没有其他的方法来确保这一点,除了在界面中留言?

编辑: 从Java 8开始,现在允许在接口中使用静态方法。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档