final 変数にアクセスしている hashCode() の実装を報告します。

このようなアクセスを行うと、hashCode() がオブジェクトのライフサイクルのさまざまな時点で異なる値を返す可能性があります。その結果、標準コレクションクラスを使用する際に問題が発生する可能性があります。

例:


  class Drink {
    String name;
    Drink(String name) { this.name = name; }
    @Override public int hashCode() {
      return Objects.hash(name); //警告
    }
  }
  ...
    Drink coffee = new Drink("Coffee");
    priceMap.put(coffee, 10.0);
    coffee.name = "Tea";
    double coffeePrice = priceMap.get(coffee); //見つかりません

フィールドを final にするクイックフィックスが提案されます。


  class Drink {
    final String name;
    ...
  }