PMD 在 java 中记录空构造函数

Document Empty Constructor In java by PMD

我在我的 Java 项目中使用 PMD 插件。

当我 运行 PMD 时,它显示警告为 "Document Empty Constructor "。

我的代码如下...

public class ExceptionHandlerImpl implements ExceptionHandler {

    private static final Logger log = Logger
            .getLogger(ExceptionHandlerImpl.class);

    /**
     * Default Constructor
     */
    public ExceptionHandlerImpl()
    {
        super();
    }

在上面的构造函数代码中显示 "Document Empty Constructor"。

我该如何解决这个问题以及为什么会出现这种情况?

您收到警告是因为您编写的构造函数与 Java 将创建的隐式默认构造函数本质上相同。因此你可以删除你的构造函数。但是,如果有任何特殊原因您仍想保留它,您应该在评论中记录原因。这就是 PMD 告诉你的。

在您的情况下,触发了 UncommentedEmptyConstructor 规则。

它会找到 非私有构造函数不包含任何语句或仅包含 super() 且内部没有注释的地方 。之前的Javadoc与这条规则无关。

通过在空构造函数中提供注释,可以更轻松地区分有意(例如能够提供 Javadoc)和无意空构造函数(有人忘记编写实现或可以删除​​此构造函数)。

这条规则对你的期望是这样的:

class MyConstructorIsNeededHere { 
  /** 
   * Creates instance of {@link Foo}.
   */ 
  MyConstructorIsNeededHere() { 
    // The explicit constructor is here, so that it is possible to provide Javadoc. 
  } 
} 

并在以下情况下警告您:

class OhNoICanBeRemoved { 
  OhNoICanBeRemoved() { 
    super();
  } 
} 

实际上写"Default constructor"作为评论消息就足够了

class Util { 

  Util() { 
    // Default constructor
  } 
}