【发布时间】:2015-05-26 01:11:01
【问题描述】:
长话短说,我有一个包含不同工具的工具箱。我想为每个工具实现一个类,并且该类必须实现一个创造性地称为“工具”的通用接口。由于每个工具只是一组方法,因此没有理由创建工具的实例,因此我希望这些方法是静态的。但是,由于这些方法是抽象的,因此不能将它们设为静态。
我希望能够做到这一点:
RectangleTool.getCursor();
EllipseTool.getCursor();
(EllipseTool 和 RectangleTool 是类名)
我觉得这是抽象静态方法的合法用途。但是,我意识到这在 Java 中是不可能的。
我没有正确看到这个吗?我意识到我可以实例化每个对象的单个对象,但我不喜欢它的语义。
说服我有更好的方法来查看这个。
【问题讨论】:
-
[几乎]所有静态方法的解决方法:依赖注入。
-
这些可能重复的 cmets 太烦人了。我明白了,在不同的线程中有一个解决方法。我试图为我目前的情况争论为什么下一个版本的 Java 应该允许抽象静态方法。我猜我的标题有误导性。
-
@ReX357 如果你想在未来的 Java 版本中为这样的特性提出论据,写一篇博客,加入 Java 邮件列表,或者在一个辩论友好的公告板上发帖,例如。如果您想要一个可行的解决方案来解决 Java 中的这个“问题”——就像今天一样——那么请注意“重复的 cmets”。
-
@user2864740 好的,很公平。谢谢。
标签: java methods interface static abstract