[英]Initialize final variable in two constructors
我有两个变量。 并且应该做两个构造函数。
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
的问题。 如果我必须使用this(size)
如何正确写入clazz
初始化?
将您的构造函数链接起来 - 从具有部分信息的构造函数到具有所有信息的构造函数:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.