我可以在 Java 中规定一个静态方法吗?

Can I prescribe a static method in Java?

罐头上写的是什么。如果之前有人问过这个问题,我深表歉意并提供链接,只是经过一番挖掘后我找不到任何东西。

考虑到接口不允许像 static 这样的关键字,并且 "abstract static" 不是 Java 中的东西(还)(请参阅此处的讨论,Why can't static methods be abstract in Java),我是否有什么办法可以说 "every descendant of Foo has a guaranteed static method Bar" ?

大多数 OO 语言接受正常的非静态虚拟方法。有些,也许是利基市场,例如 Delphi 有虚拟静态方法的想法。

在派生对象中可以调用静态方法,并且对对象使用足够class。很多人没有这个概念。

every descendant of Foo has a guaranteed static method Bar

不一定,对于 default 方法,如果在 child 中使用,您只能重写 default 方法,除此之外每个 child 都将在interface。而且,default方法是不是static

另一方面,static 方法在 Java-8 中是允许的,但您可以直接使用接口名称访问它,这并不意味着 children 接口会有那个static 方法。但是这个 static 方法对于每个可以导入或到达接口的 class 都可以访问。

您的问题在 java 语言中不是问题。你不能 'prescribe' subclasses 有一个静态方法 x(),并且 即使你可以,也不会有任何语言元素允许你实际 调用 subclass 静态方法(除非用子 class 文字限定它,这违背了目的)。

这看起来像一个 XY 问题。最好问问你打算解决.

的问题