在
Java中,是否有可能强制一个类具有一组特定的子类而没有其他子类?例如:
public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
我可以以某种方式强制不能创建 A 的其他子类吗?
为类A
提供一个具有包级可访问性的构造函数(没有其他构造函数)。
谢谢,Dave L.,没有其他构造函数。
你可能想要一个枚举(Java>= 1.5)。枚举类型可以具有一组固定值。它拥有类的所有优点:它们可以具有字段和属性,并且可以使它们实现接口。枚举不能扩展。
例:
enum A {
B,
C,
D;
public int someField;
public void someMethod() {
}
}
您可以将类 A、B、C、D 放在一个单独的包中,并使类 A 不公开。
教会编码救援:
public abstract class A {
public abstract <R> R fold(R b, R c, R d);
}
只有三种可能的实现:
public final class B extends A {
public <R> R fold(R b, R c, R d) {
return b;
}
}
public final class C extends A {
public <R> R fold(R b, R c, R d) {
return c;
}
}
public final class D extends A {
public <R> R fold(R b, R c, R d) {
return d;
}
}