报告具体类而非接口的用法。 此类声明可能代表抽象失败,并可能使测试更加困难。

此检查不会报告其类来自系统或第三方库的声明。 equals() 方法实现中不报告转换、instanceofs 和局部变量。 此外,在 clone() 方法实现中不会报告转换。

示例:


  interface Entity {}
  class EntityImpl implements Entity {}

  void processObject(Object obj) {
    // 警告:具体类的实例
    if (obj instanceof EntityImpl) {
      // 警告:强制转换为具体类,
      // 而不是接口
      processEntity((EntityImpl)obj);
    }
  }
  // 警告:具体类的参数
  void processEntity(EntityImpl obj) {
  }

使用下面的第一个复选框忽略对抽象类的强制转换。

使用后续复选框来控制报告问题的上下文。