I have a set of singleton classes and I want to avoid boilerplate code. Here is what I have now:
public class Mammal {
protected Mammal() {}
}
public class Cat extends Mammal {
static protected Cat instance = null;
static public Cat getInstance() {
if (null == instance) {
instance = new Cat();
}
return instance;
}
private Cat() {
// something cat-specific
}
}
This works and there's nothing wrong with it, except that I have many subclasses of Mammal
that must replicate the getInstance()
method. I would prefer something like this, if possible:
public class Mammal {
protected Mammal() {}
static protected Mammal instance = null;
static public Mammal getInstance() {
if (null == instance) {
instance = new Mammal();
}
return instance;
}
}
public class Cat extends Mammal {
private Cat() {
// something cat-specific
}
}
How do I do that?