这似乎是一个常见的任务,但我有点困惑.假设我有一个带有数据成员和相应的getter/setter的抽象父类.
public abstract class Parent {
private MyObj myObj;
public MyObj getMyObj() { return myObj; }
public void setMyObj(MyObj myObj) { this.myObj = myObj; }
}
Run Code Online (Sandbox Code Playgroud)
我需要强制子类设置"myObj"变量.我有2个选择:
避免在父级中声明数据成员.只有一个父方法,
abstract public MyObj getMyObj();
然后,父将始终引用getMyObj().getField1(),getMyObj().getField2()等.每次创建一个新对象,而不是将其存储在一个地方.
强制子类设置父类的数据变量的标准方法是什么?这是一个新的抽象方法,在getter/setter之外?
要使编译器强制myObj设置,您可以这样做:
public abstract class Parent {
private final MyObj myObj;
Run Code Online (Sandbox Code Playgroud)
该final方法的价值不能被改变,而且它必须设置.由于您有一个setter,因此可能会更新该值; 如果预期不添加final关键字.
要确保设置该字段,请添加构造函数:
protected Parent( MyObj initial ) {
if ( initial == null )
throw new IllegalArgumentException( "Must provide a value!" );
this.myObj = initial;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |