代码之家  ›  专栏  ›  技术社区  ›  LiorH

抽象类中的空方法

  •  8
  • LiorH  · 技术社区  · 15 年前

    我刚刚安装了PMD来分析我的Java项目。非常好的工具,强烈推荐。 总之,我有几个错误说:

    “抽象类中的空方法应改为抽象方法”

    我查看了PMD文档,解释说:

    因为开发人员可能依赖于这个空的实现,而不是编码适当的实现

    所以我想我理解这种代码样式错误背后的原因,但是考虑下面的场景:我有一个名为Entity的抽象类。此类具有具有默认实现的布尔方法。(控制删除时是否删除其相关实体)。只有少数派生类将此默认行为重写为true。

    我应该删除默认实现并强制所有派生类声明它们的行为吗? 你真的认为这种模式是一种糟糕的做法吗?

    澄清: PMD将具有单个返回语句的方法视为空。

    2 回复  |  直到 8 年前
        1
  •  10
  •   Mehrdad Afshari    15 年前

    我认为这只是一个指导方针。它告诉你,所以你可能想重新考虑你的设计,但如果你的设计已经有了完美的意义,没有理由去服从一个软件而不是你的大脑。

        2
  •  0
  •   Shruthi V    8 年前

    如果您在Java 1.8上,则可以使实体为 界面 而不是抽象类并编写 违约 在其中实现方法。

    public interface Entity {
        default boolean yourMethod() {
            //default implementation ...
        }
    }
    

    您可以参考: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html