mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
35 lines
879 B
HTML
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> |