gpt4 book ai didi

java - 在两个构造函数中初始化最终变量

转载 作者:行者123 更新时间:2023-12-03 03:42:13 25 4
gpt4 key购买 nike

我有两个变量。并且应该创建两个构造函数。

 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 时,我遇到了类似 has wassigned 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;
}

关于java - 在两个构造函数中初始化最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53086092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com