Java中带有enum的Switch语句
我希望有人能指引我正确的方向 我有以下部门名称及其代码的enum代码。我希望能够在屏幕上打印部门的全名及其描述。我想通过使用switch语句来实现这一点,但我不确定将switch语句放在何处Java中带有enum的Switch语句,java,enums,Java,Enums,我希望有人能指引我正确的方向 我有以下部门名称及其代码的enum代码。我希望能够在屏幕上打印部门的全名及其描述。我想通过使用switch语句来实现这一点,但我不确定将switch语句放在何处 enum DepartmentName { FINANCE ("FIN") , SALES ("SAL") , PAYROLL ("PYR") , LOGISTIC ("LGT") ; private fi
enum DepartmentName {
FINANCE ("FIN")
, SALES ("SAL")
, PAYROLL ("PYR")
, LOGISTIC ("LGT")
;
private final String department;
DepartmentName(String abbr) {
department = abbr;
}
public String getDepartmentCode() {return department;}
@Override
public String toString() {
return "The department name is " + getDepartmentCode();
}
}
感谢您的帮助
我希望能够在屏幕上打印部门的全名及其描述
您需要将全名与每个enum
值相关联。最简单的方法是将说明
成员添加到枚举
:
enum DepartmentName {
FINANCE ("FIN", "Finance")
, SALES ("SAL", "Sales")
, PAYROLL ("PYR", "Payroll")
, LOGISTIC ("LGT", "Logistic")
;
private final String department;
private final String description;
DepartmentName(String abbr, String full) {
department = abbr;
description = full;
}
public String getDepartmentCode() {return department;}
public String getDescription() {return description;}
@Override
public String toString() {
return "The department name is " + getDepartmentCode();
}
}
我想通过使用switch语句来实现这一点
这样做是错误的,因为与名称的关联将位于枚举的外部(即不再被封装)。这样做的结果是,每次添加新的enum
成员时,依赖该enum
的所有开关都需要更改。此外,编译器将无法帮助您捕获丢失新enum
值的地方
我希望能够在屏幕上打印部门的全名及其描述
您需要将全名与每个enum
值相关联。最简单的方法是将说明
成员添加到枚举
:
enum DepartmentName {
FINANCE ("FIN", "Finance")
, SALES ("SAL", "Sales")
, PAYROLL ("PYR", "Payroll")
, LOGISTIC ("LGT", "Logistic")
;
private final String department;
private final String description;
DepartmentName(String abbr, String full) {
department = abbr;
description = full;
}
public String getDepartmentCode() {return department;}
public String getDescription() {return description;}
@Override
public String toString() {
return "The department name is " + getDepartmentCode();
}
}
我想通过使用switch语句来实现这一点
这样做是错误的,因为与名称的关联将位于枚举的外部(即不再被封装)。这样做的结果是,每次添加新的enum
成员时,依赖该enum
的所有开关都需要更改。此外,编译器将无法帮助您捕获丢失新枚举值的位置。to字符串应如下所示:
public String toString() {
switch (this) {
case FINANCE:
return "finance";
case SALES:
return "sales";
case PAYROLL:
return "payroll";
... // and so on
}
return this.name();
}
要创建字符串,请执行以下操作:
public String toString() {
switch (this) {
case FINANCE:
return "finance";
case SALES:
return "sales";
case PAYROLL:
return "payroll";
... // and so on
}
return this.name();
}
我假设您的真实代码在“LGT”
之后有一个)
?(看起来dasblinkenlight也假设,因为他刚刚更新了问题代码来添加它。)为什么要使用switch语句?如果希望每个枚举都有一个部门全名,则将其添加为枚举的一个字段,就像处理部门代码一样。或者,您的意思是枚举的名称(例如,财务)是该部门的全名?枚举有一个name()方法,该方法返回它们的名称。我假设您的实际代码在“LGT”
之后有一个)
?(看起来dasblinkenlight也假设,因为他刚刚更新了问题代码来添加它。)为什么要使用switch语句?如果希望每个枚举都有一个部门全名,则将其添加为枚举的一个字段,就像处理部门代码一样。或者,您的意思是枚举的名称(例如,财务)是该部门的全名?枚举有一个name()方法,返回它们的名称。感谢您的解决方案。这对理解很有帮助。谢谢你的解决方案。这对理解很有帮助。