compareTo() 実装にある非 final フィールドへのアクセスを報告します。
このようなアクセスを行うと、compareTo() がオブジェクトのライフサイクルのさまざまな時点で異なる結果を返す可能性があります。その結果、java.util.TreeSet などの標準コレクションクラスを使用する際に問題が発生する可能性があります。
フィールドへの書き込みアクセス権がない場合にのみ、フィールドを final にするクイックフィックスを使用できます。それ以外の場合、クイックフィックスは提案されません。
例:
class Foo implements Comparable<Foo>{
private int index;
Foo(int idx) {
index = idx;
}
@Override
public int compareTo(Foo foo) {
return Integer.compare(this.index, foo.index);
}
}
クイックフィックス適用後:
class Foo implements Comparable<Foo>{
private final int index;
Foo(int idx) {
index = idx;
}
@Override
public int compareTo(Foo foo) {
return Integer.compare(this.index, foo.index);
}
}