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 >
working with classes that (unfortunately) call overridden methods from their constructors
Working with classes that (unfortunately) call overridden methods from their constructors
I was struggling with a problem today, and I found a pretty decent workaround. Since initial googling hadn't turned anything useful up, I figured this writeup might help others who search for it in the future.
In essence, the problem boils down to "How can you initialize your own object before the superclass constructor has run?"
Let's express this in code - I've changed the example to a simple domain to make the intent obvious:
/** Represents a building, such as a house, a garage, etc. */
public class Building {
public Building() {
// Do something with the result of getColor(), such as
reservePaint(getColor());
}
protected abstract Color getColor();
}
The above class is the "framework" class I'm trying to extend. I do not have the option of changing it or extending something else; this is the integration point.
Note the error above: the constructor is calling an overridden method. This is a
well
documented problem. Previous uses of the above class had probably not run into it, because most usages would be something like the following:
public class Skyscraper extends Building {
protected Color getColor() {
return Color.LIGHT_GRAY;
}
}
Since the overridden method typically returns a constant that is independent of the subclass object being properly constructed, calls from the superclass constru...
Date: September, 21 2006
Url: http://blogs.sun.com/tor/entry/working_with_classes_that_unfortunately
Others News
|