Apo*_*isp 7 java abstract-class final class adts
在Java中,是否有可能强制某个类具有一组特定的子类而没有其他子类?例如:
public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式强制执行不能创建A的其他子类吗?
教会编码来拯救:
public abstract class A {
public abstract <R> R fold(R b, R c, R d);
}
Run Code Online (Sandbox Code Playgroud)
只有三种可能的实现:
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;
}
}
Run Code Online (Sandbox Code Playgroud)