如果我理解你的问题,你可以使用valueOf(String)
like
String name = "Peter";
Friends f = Friends.valueOf(name);
switch (f) {
case Peter:
System.out.println("Peter");
break;
case Ian:
System.out.println("Ian");
break;
case Sarah:
System.out.println("Sarah");
break;
default:
System.out.println("None of the above");
}
还有,这个
private Person(String fullName, String occupation) {
this.fullName = fullName;
this.occupation = occupation;
}
应该
private Friends(String fullName, String occupation) {
this.fullName = fullName;
this.occupation = occupation;
}
Because Person
!= Friends
.
Edit
根据您的评论,您将需要编写一个静态方法才能获得正确的结果Friends
实例,
public static Friends fromName(String name) {
for (Friends f : values()) {
if (f.getFullName().equalsIgnoreCase(name)) {
return f;
}
}
return null;
}
然后你可以用以下方式调用它:
String name = "Peter von Reus";
Friends f = Friends.fromName(name);
valueOf(String)
将匹配枚举字段的名称。所以“伊恩”、“莎拉”或“彼得”。