【发布时间】:2014-11-24 18:46:54
【问题描述】:
更新: 我知道静态方法不可能是抽象的,而且我知道为什么,这不是一个像“它是否可能?”这样的问题。或“为什么不可能?”,我只是想知道是否有任何方法可以得到我想要的。
好吧,如果您听说过 python 中的@classmethod,则可以跳过其余部分。
这就是我想要的:在某些情况下,某些方法只是函数,我只需要它的功能。但是,在 Java 中,您必须将所有内容放在一个类中,因此我必须将这些 函数 包装在一个类中并将它们设置为静态。问题是,对于像这样的类,我不需要,我也不应该需要它的任何实例。同时,我想要这样的类的层次结构。这里的层次结构就像一些“控制”:我可以控制你应该做什么的子类,也就是你应该拥有什么方法/功能。
众所周知,我们不能在类中声明static abstract 方法。
但是,在某些情况下,您只需要方法而不是实例,并且您需要方法是抽象的并在子类中实现。
有人指出this may be a poor design in java,但是有什么可能的解决方案吗?
【问题讨论】:
-
你想用它做什么?
-
没有。将 static 方法标记为 abstract 是没有意义的。方法的覆盖基于对象(实例),而不是类型本身。静态方法仅依赖于类型,而不依赖于任何特定实例。为什么不直接拨打
MyabstractClass.someMethod()? -
您现在无法创建
abstract class的实例,所以我现在确定您希望添加static会做不同的事情,或者您尝试做不同的事情。 -
顺便说一句,如果您只想要抽象方法,接口可能是更好的选择。
-
这对我来说似乎是一个 XY 问题。你到底想做什么?
标签: java