有没有办法实现代数类型Java?
-
05-07-2019 - |
题
它是可能的,在爪哇,强制执行这类具有特定的子类,并没有其他人吗?例如:
public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
我可以以某种方式强制执行,没有任何其他类的一个可能曾经被创造了?
解决方案 4
教会编码的救援:
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;
}
}
其他提示
给类 A
一个构造与包级别访问(以及没有其他的构造).
谢谢,Dave L.,用于关于没有其他的构造方法。
你可能想要一个枚举,(Java>=1.5).枚举的类型可以有一套固定的价值观。并且它拥有的所有东西的一类:他们可以有领域和特性,并可以使他们实现一个接口。枚举不可延长。
例如:
enum A {
B,
C,
D;
public int someField;
public void someMethod() {
}
}
你可以把A类、B类、C、D在一个单独的包装和作出类的一个不公开的。
不隶属于 StackOverflow