メンタ:
私は2つの変数を持っています。そして、2つのコンストラクタを作成する必要があります。
private int size;
final private Class clazz;
最初:
public SomeConstr(int size) {
if (size <= 0) {
this.size = 0;
IllegalArgumentException argumentException = new IllegalArgumentException();
logger.log(Level.SEVERE, "", argumentException);
throw argumentException;
}
else
this.size = size;
this.clazz = Device.class;
}
}
第二:
public ComeConstrSecond(int size, Class clazz) {
this(size);
if (clazz == null || !Device.class.isAssignableFrom(clazz)) {
logger.log(Level.SEVERE, "");
throw new IllegalArgumentException();
}
this.clazz = clazz;
}
私は初期化するとthis.clazz = clazz
二コンストラクタで、私のような問題を抱えていますhave been assigned to
。どのように正しい書き込み初期化のためにclazz
私が使用しなければならない場合はthis(size)
?
ジョンスキート:
チェーンあなたのコンストラクタ他の方法でラウンド - 部分的な情報を持つ1からすべての情報を持つものに:
public SomeConstr(int size) {
this(size, Device.class);
}
public SomeConstr(int size, Class clazz) {
if (size <= 0) {
IllegalArgumentException argumentException = new IllegalArgumentException();
logger.log(Level.SEVERE, "", argumentException);
throw argumentException;
}
if (clazz == null || !Device.class.isAssignableFrom(clazz)) {
logger.log(Level.SEVERE, "");
throw new IllegalArgumentException();
}
this.size = size;
this.clazz = clazz;
}