Java
Non-final field referenced in 'compareTo()'
Warning
New
Last modified: 03 December 2024 Reports access to a non-final
field inside a compareTo()
implementation.
Such access may result in compareTo()
returning different results at different points in the object's lifecycle, which may in turn cause problems when using the standard collections classes, for example java.util.TreeSet
.
A quick-fix to make the field final
is available only when there is no write access to the field, otherwise no fixes are suggested.
Example:
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);
}
}
After the quick-fix is applied:
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);
}
}
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
CompareToUsesNonFinalVariable
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 243.23126 |
Thanks for your feedback!
Was this page helpful?