Java 如何在构造函数中设置对象枚举类型?
我有以下课程:Java 如何在构造函数中设置对象枚举类型?,java,enums,Java,Enums,我有以下课程: public class Owner { private final Integer id; private final OwnerType type; public Owner(Integer iId, Enum eType) { this.id= iId; this.lastName = lName; this.type = eType // how should that work? } } 及 我通过以下方式拨
public class Owner {
private final Integer id;
private final OwnerType type;
public Owner(Integer iId, Enum eType) {
this.id= iId;
this.lastName = lName;
this.type = eType // how should that work?
}
}
及
我通过以下方式拨打:
try {
File file = new File("resources/Owner.txt");
Scanner fileContent = new Scanner(file);
while (fileContent.hasNextLine()) {
String[] person = fileContent.nextLine().split(" ");
this.data.add(new Owner(owner[0],owner[1]));
}
} catch (FileNotFoundException err){
System.out.println(err);
}
其中Owner.txt的格式为:
ID TYPE
就像这样:
1 HUMAN
2 INSTITUTION
我的问题是:
调用以下命令时,如何指定所有者对象的type
属性
new Owner(owner[0],owner[1])
默认情况下,任何枚举对象都具有方法valueOf(String key),该方法所做的是在枚举类中搜索所有定义的值,如果找到,则返回正确的值 有关更多信息,请关注以下内容: 在这种特殊情况下,枚举
public enum OwnerType {
HUMAN,INSTITUTION
}
如果我们使用OwnerType.valueOf(“HUMAN”),将返回枚举类型HUMAN
这里使用这个:
try {
File file = new File("resources/Owner.txt");
Scanner fileContent = new Scanner(file);
while (fileContent.hasNextLine()) {
String[] person = fileContent.nextLine().split(" ");
this.data.add(new Owner(person[0],OwnerType.valueOf(person[1])));
}
} catch (FileNotFoundException err){
System.out.println(err);
}
这里有两个问题 首先,
所有者
的构造函数应该接收一个所有者类型
,而不仅仅是任何枚举
:
public Owner(Integer iId, OwnerType eType) {
this.id= iId;
this.type = eType;
}
解析输入文件时,可以使用该方法将字符串值转换为OwnerType
:
this.data.add
(new Owner(Integer.parseInt(owner[0]), OwnerType.valueOf(owner[1])));
什么是“所有者”?它是什么类型的?首先,能否更改
Enum
的名称,使其不是java.lang
包中的类的名称?这将使您的代码和问题变得更简单。您的“构造函数”名称(AccountOwner
)与类名(Owner
)不匹配。除此之外,听起来您需要Enum.valueOf
请发布编译的代码,或者至少只在有问题的地方出现编译错误。没有名为owner
的变量。不管它是什么数组,它都不能匹配构造函数的参数。你为什么用Enum
而不是OwnerType
呢?请解释你的答案。没有解释的代码转储是无用的。
this.data.add
(new Owner(Integer.parseInt(owner[0]), OwnerType.valueOf(owner[1])));