Files
openide/java/java-impl/resources/inspectionDescriptions/HashCodeUsesNonFinalVariable.html
Leonid Shalupov 40795fe787 IJI-2422: community/java: move resources under resources root
GitOrigin-RevId: 8b2b63fc6db476ca0c2cfe5cadd84db6c4236d0f
2025-02-05 04:43:28 +00:00

35 lines
879 B
HTML

<html>
<body>
Reports implementations of <code>hashCode()</code> that access
non-<code>final</code> variables.
<p>
Such access may result in <code>hashCode()</code>
returning different values at different points in the object's lifecycle, which may in turn cause problems when
using the standard collections classes.
</p>
<p><b>Example:</b></p>
<pre><code>
class Drink {
String name;
Drink(String name) { this.name = name; }
@Override public int hashCode() {
return Objects.hash(name); //warning
}
}
...
Drink coffee = new Drink("Coffee");
priceMap.put(coffee, 10.0);
coffee.name = "Tea";
double coffeePrice = priceMap.get(coffee); //not found
</code></pre>
<p>A quick-fix is suggested to make the field final:</p>
<pre><code>
class Drink {
final String name;
...
}
</code></pre>
<!-- tooltip end -->
</body>
</html>