zoukankan      html  css  js  c++  java
  • Java switch 中如何使用枚举?

    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;
    }
    }

    想使用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;
    }
    }

    解决方案

    修改枚举类

    新增一个静态方法,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;
    }
    }

    转载至 https://www.cnblogs.com/codeclock/p/12564924.html

    假如我的博客对你有用,请你关注我一下,告诉我你来过,你的关注是我前进的动力,希望更多的人记录自己的问题,去帮助别人更是帮助自己避免再次出现这样那样的问题,谢谢你的来过!
  • 相关阅读:
    The lexer hack
    How Clang handles the type / variable name ambiguity of C/C++
    python
    基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)
    程序员最该看的30本书---------------------------国外编辑推荐
    DirectX 学习经典参考书籍 电子书下载
    基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单
    请问JAVA三层架构,持久层,业务层,表现层,都该怎么理解?和MVC三层模型有什么区别
    对java框架的几点认识
    J2EE入门必备
  • 原文地址:https://www.cnblogs.com/zxy-come-on/p/15131504.html
Copyright © 2011-2022 走看看