如何在JAVA中重写子类中的static / class方法?

时间:2017-07-11 12:39:37

标签: java class inheritance static method-overriding

  1. 是什么版本的JAVA计划实现覆盖静态方法的可能性?

  2. 这一年会是什么时候?

  3. 如何在JAVA8中实现类似的功能?

  4. 是否有一些oracle JVM的破解?

  5. 是否有其他虚拟机或编译器能够覆盖静态方法?

  6. P.S.2:

    所以,正如我所看到的,java中的单词“static”非常混乱,所以我现在指出我的问题:

    我真正想要的是,类的方法,(如果你将它们命名为“静态方法”,“类方法”或其他任何内容,则无关紧要。)

1 个答案:

答案 0 :(得分:1)

这就是为什么很多人认为静态是一个好的OOP的异常:杀死多态(除了引入耦合)你的班级之间。)

因此,简单的答案是:覆盖静态不能一起使用。不是8或9之前的Java版本;并且最有可能:也从未在未来 - 我不知道任何计划/项目/ JCP来改变它。

从这个意义上说,唯一的答案是:干脆避免使用它。

如果有的话,你把它放在“自包含”的小辅助方法上(意味着它们做了一些在单元测试环境中工作正常的简单功能)。只要 static 能够轻松地对代码进行单元测试,您就会走错路。

当您在遗留代码中找到 static 时,您必须处理 - 然后考虑为底层功能定义一个接口,以便您可以将代码与实际静态方法分离。