我有一個關於繼承的問題/強制給Java中的某個屬性賦予某個屬性我不確定,即使我花了很多時間思考它。我會盡量做到儘可能簡單。強制子類中的Java屬性類型
所以從來就得到了一個抽象類Foo
,其中有龍目註釋@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。另一方面,OutFoo
中的boundType
應始終爲枚舉類型OUT。例如:
@Data
public class InFoo extends Foo{
public void setBoundType() {
//ALWAYS HAS TO BE BoundType.IN
}
}
我該如何執行此操作?不知道如何設計它。提前致謝。
」不是個如果我們在InFoo類中將BouudType定義爲私有變量並且不暴露其getter和setter,那麼它會好嗎? –
這是不是打破了讓子類定義類型的繼承原則? –
是的,但任何我們強迫價值的方法都必須是IN或OUT,所以我認爲把它的二傳給他的孩子是沒有什麼意義的,因爲即使有二傳手,我們也需要限制孩子設置具體的價值只有 –