簡體   English   中英

在子類中強制Java屬性類型

[英]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;
}

我還有另外兩個類, InFooOutFoo擴展了Foo boundTypeInFoo 應該始終是枚舉類型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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM