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])));