我可以在 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 问题。最好问问你打算解决.
的问题
罐头上写的是什么。如果之前有人问过这个问题,我深表歉意并提供链接,只是经过一番挖掘后我找不到任何东西。
考虑到接口不允许像 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 问题。最好问问你打算解决.
的问题