[英]Forcing Java attribute type in sub-class
我有一個問題,關於我不確定的Java屬性中的繼承/強制某些值,即使我花了很多時間思考它。 我將嘗試變得盡可能簡單。
因此,我有了一個抽象類Foo
,它帶有Lombok批注@Data
:
@Data
public abstract class Foo{
private String id;
protected BoundType type;
public abstract void setBoundType(BoundType boundType);
}
這是枚舉BoundType
:
public enum BoundType {
IN, OUT;
}
我還有另外兩個類, InFoo
和OutFoo
擴展了Foo
。 boundType
的InFoo
應該始終是枚舉類型IN 。 另一方面, boundType
中的OutFoo
應該始終是枚舉類型OUT 。 例如:
@Data
public class InFoo extends Foo{
public void setBoundType() {
//ALWAYS HAS TO BE BoundType.IN
}
}
我該如何執行呢? 不確定如何設計。 提前致謝。
確保構造函數為每個子類設置正確的值,然后確保沒有設置器,從而無法更改該值。
另外,有關如何為BoundType字段省略二傳手的信息,請參閱在Lombok中省略一個二傳手/信的帖子。
應該在子類的構造函數中設置正確的值:
public InFoo() {
boundType = BoundType.IN;
}
如果有必要使用setter模式,則可以在此處進行檢查:
public void setBoundType(BoundType boundType) {
if(boundType != BoundType.IN)
throw new IllegalArgumentException();
this.boundType = boundType; // This line is actually unnecessary
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.