[英]Is there a way to implement algebraic types in Java?
在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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.