February 01, 2011
Mark Wielaard: New GPG key.
Finally created a new GPG key using gnupg. The old one was a DSA/1024 bits one and 8 years old. The new one is a RSA/2048 bits one. I will use the new one in the future to sign any release tarballs I might create. pub 2048R/57816A6A 2011-01-29 Key f...
More »
February 01, 2011
Andrew Hughes: [SECURITY] IcedTea6 1.7.8, 1.8.5, 1.9.5 Released!.
We are pleased to announce a new set of security releases, IcedTea6 1.7.8, IcedTea6 1.8.5 and IcedTea6 1.9.5.
This update contains the following security updates:
The IcedTea project provides a harness to build the source code from OpenJDK6 u...
More »
November/2024
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
|
|
home > news >
developers >
code advice #12: use final on constructor and setter parameters
Code Advice #12: Use final on constructor and setter parameters
(See intro for a background and caveats on these coding advice blog entries.)
In my previous
code style entry I recommended a setter pattern where the parameter is identical to the field name, as in the following:
void setTemperature(int temperature) {
this.temperature = temperature;
}
I mentioned that there is the potential of a bug here if the parameter name has a typo; the code will compile just fine but not work as expected since you will be assigning the field back to itself.
There is another problem that can occur when you are "masking" the field with a parameter name. What if you add some code where you don't realize that the name is referring to a parameter, not the field? If you try to update the field, you will update the parameter instead:
void setTemperature(int temperature) {
this.temperature = temperature;
...
... // Other code here
...
if (temperature temperature = -273;
}
}
Ooops!
This motivates another good pattern (besides validating before assigning): Use the final modifier on parameters in constructors and setter methods:
void setTemperature(final int temperature) {
this.temperature = temperature;
...
... // Other code here
...
if (temperature // Won't compile
}
}
The final modifie...
Date: August, 08 2006
Url: http://blogs.sun.com/tor/entry/code_advice_12_use_final
Others News
|