Java中带有enum的Switch语句

Java中带有enum的Switch语句,java,enums,Java,Enums,我希望有人能指引我正确的方向 我有以下部门名称及其代码的enum代码。我希望能够在屏幕上打印部门的全名及其描述。我想通过使用switch语句来实现这一点,但我不确定将switch语句放在何处 enum DepartmentName { FINANCE ("FIN") , SALES ("SAL") , PAYROLL ("PYR") , LOGISTIC ("LGT") ; private fi

我希望有人能指引我正确的方向

我有以下部门名称及其代码的enum代码。我希望能够在屏幕上打印部门的全名及其描述。我想通过使用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();
    }
}
感谢您的帮助

我希望能够在屏幕上打印部门的全名及其描述

您需要将全名与每个
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()方法,返回它们的名称。感谢您的解决方案。这对理解很有帮助。谢谢你的解决方案。这对理解很有帮助。