栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java枚举Enum 与字符串的比较

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java枚举Enum 与字符串的比较

众所周知

Enum类重写了equals方法,使其与“==”判断一致

    public final boolean equals(Object other) {
        return this==other;
    }

但这只针对枚举这个类之间,很多时候我们不直接比较枚举类,而是比较具体的属性。
因为几乎前后端交互不会传递枚举这个对象,只会传递里面的属性比如code,name等等。
然后有两个思路:

  1. getByCode通过code获取对应的枚举对象,比较枚举对象
 switch (MathEnum.getByCode("=")) {
       case LE:
       case LT:
  1. 枚举对象getCode返回code属性比较String
 if (!MathEnum.EQ.getCode().equals("=")){
     log.info("不执行");
 }
枚举和字符串

一个运算符枚举类

public enum MathEnum {

    EQ("=", "等于"),
    GE(">=", "大于或等于"),
    LE("<=", "小于或等于"),
    GT(">", "大于"),
    LT("<", "小于"),
    BTN("between", "在...之间"),;

    private final String code;

    private final String desc;

    MathEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    public static MathEnum getByCode(String code) {
        if (code == null) {
            return null;
        }
        for (MathEnum mathEnum : MathEnum.values()) {
            if (code.equals(mathEnum.getCode())){
                return mathEnum;
            }
        }
        return null;
    }

    public static List getCodes() {
        List result = Lists.newArrayList();
        for (MathEnum mathEnum : MathEnum.values()) {
            result.add(mathEnum.getCode());
        }
        return result;
    }
}

会有这四种比较形式。其实MathEnum.EQ.getCode()返回值本就是String类型的"=",本质是字符串之间的比较。

            if (MathEnum.EQ.getCode() != "="){
                log.info("执行");
            }
            if ("=" != MathEnum.EQ.getCode()){
                log.info("执行");
            }
            if (!"=".equals(MathEnum.EQ.getCode())){
                log.info("不执行");
            }
            if (!MathEnum.EQ.getCode().equals("=")){
                log.info("不执行");
            }

回忆一下字符串的==和equals,当字符串相同,但是对象不同或者说地址不同时:

  1. equals返回true
  2. ==返回false
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号