我希望有人能指引我走向正确的方向。
我在枚举中有以下代码,包含部门名称及其代码。我希望能够在屏幕上打印部门的全名及其说明。我想通过使用switch语句来实现这一点,但我不确定在何处放置switch语句。
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();
}
}
感谢任何帮助。
答案 0 :(得分:4)
我希望能够在屏幕上打印部门的全名及其说明。
您需要将全名与每个enum
值相关联。最简单的方法是将description
成员添加到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
成员时,依赖于switches
的所有enum
都需要更改。此外,编译器无法帮助您捕获错过新enum
值的位置。
答案 1 :(得分:1)
To String应该遵循:
public String toString() {
switch (this) {
case FINANCE:
return "finance";
case SALES:
return "sales";
case PAYROLL:
return "payroll";
... // and so on
}
return this.name();
}