报告可以更改为更抽象(更弱)类型的变量和方法返回类型。 这样一来代码会更抽象,因此可重用性更高。

示例:

  // 参数类型可以削弱为 java.util.List
  void processList(ArrayList<String> list) {
    if (list.isEmpty()) return;
    System.out.println("Processing");
    for (String s : list) {
      System.out.println("String: " + s);
    }
  }

启用下面的使用右侧类型复选框,以防止在右侧并非类型转换或新表达式时削弱赋值的左侧。 在变量中存储方法调用结果时,保留方法调用结果的类型非但不会不必要地削弱它,反而会很有用。

启用下面的使用参数化类型复选框,在求值的对象用作参数类型为 java.lang.Object 的集合方法的参数时,将集合的参数化类型用作最弱的类型。 在将对象传递给以下集合方法时,使用此选项可以防止削弱为 Object: get()remove()contains()indexOf()lastIndexOf()containsKey()containsValue()

启用下面的不削弱为 Object复选框,可以指定是否应将类型削弱为 java.lang.Object。 削弱为 java.lang.Object 很少会很有用。

启用下面的仅削弱为接口复选框,仅在该类型可以削弱为接口类型时才报告问题。

启用下面的不削弱返回类型复选框,以防止在返回类型可能被削弱时报告问题。 只分析变量。

启用下面的不建议削弱声明为 'var' 的变量复选框,以防止报告使用 'var' 关键字声明的局部变量 (Java 10+)

停止类意在防止类削弱至低于停止类的程度,即便可能出现这种情况,也能予以防止。 在某些情况下,这可能会提高可读性。