java switch enum对象_Java switch 中使用枚举

问题

想使用switch去替换掉if-else,想到Hobby这个类里面的type属性正好是个枚举,就想用枚举去实现,结果发现这样是有问题的。

枚举类

public enum HobbyEnum{

SIGN("唱","SING"),

JUMP("跳","JUMP"),

RAP("Rap","RAP"),

OTHER("未知","OTHER");

private String word;

private String type;

HobbyEnum(String word, String type){

this.word = word;

this.type = type;

}

public String getWord() {

return word;

}

public void setWord(String word) {

this.word = word;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

}

直接使用会报错

2a643adfd1366bb88e74364bfe6aa617.png

解决方案

修改枚举类

新增一个静态方法,getByType()

enum HobbyEnum{

SIGN("唱","SING"),

JUMP("跳","JUMP"),

RAP("Rap","RAP"),

OTHER("未知","OTHER");

private String word;

private String type;

HobbyEnum(String word, String type){

this.word = word;

this.type = type;

}

public String getWord() {

return word;

}

public void setWord(String word) {

this.word = word;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public static HobbyEnum getByType(String type){

for (HobbyEnum constants : values()) {

if (constants.getType().equalsIgnoreCase(type)) {

return constants;

}

}

return OTHER;

}

}

修改实现逻辑

使用的时候直接根据type去获取这个枚举,这样就可以进行判断了

02894a0f4babc19cc8db4d88917970d4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 枚举是一种特殊的类,它表示一组常量。在 Java 枚举类型是通过关键字 `enum` 来定义的。Enum 类是所有枚举类型的基类,它提供了一些方法来处理枚举类型。 使用枚举类型可以提高代码的可读性和可维护性。枚举类型通常用于表示一组固定的常量,例如颜色、星期几等。 以下是一个简单的示例,演示如何定义和使用枚举类型: ```java enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public class EnumExample { public static void main(String[] args) { DayOfWeek day = DayOfWeek.MONDAY; switch (day) { case MONDAY: System.out.println("Today is Monday"); break; case TUESDAY: System.out.println("Today is Tuesday"); break; case WEDNESDAY: System.out.println("Today is Wednesday"); break; case THURSDAY: System.out.println("Today is Thursday"); break; case FRIDAY: System.out.println("Today is Friday"); break; case SATURDAY: System.out.println("Today is Saturday"); break; case SUNDAY: System.out.println("Today is Sunday"); break; } } } ``` 上面的示例定义了一个枚举类型 `DayOfWeek`,它包含了一周的每一天。在 `main` 方法,我们将 `day` 变量初始化为 `DayOfWeek.MONDAY`,然后使用 `switch` 语句根据 `day` 的值输出相应的信息。 枚举类型还可以包含构造函数、方法和字段。下面的示例演示了如何在枚举类型定义方法和字段: ```java enum Size { SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL"); private String abbreviation; private Size(String abbreviation) { this.abbreviation = abbreviation; } public String getAbbreviation() { return abbreviation; } } public class EnumExample { public static void main(String[] args) { Size size = Size.MEDIUM; System.out.println(size.getAbbreviation()); // 输出 "M" } } ``` 上面的示例定义了一个枚举类型 `Size`,它包含了衣服的尺码。每一个枚举常量都有一个对应的缩写,我们可以通过 `getAbbreviation` 方法获取它的值。在枚举类型,我们还可以定义构造函数,这里我们使用了带参数的构造函数来初始化字段 `abbreviation`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值