枚举类比较的陷阱

public class TestTypeTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String feedback = "feedback";
        if(TestType.FEEDBACK.equals(feedback)){
            System.out.println("equal"+TestType.FEEDBACK);
        }else{
            System.out.println("no"+TestType.FEEDBACK);
        }

        if(TestType.FEEDBACK.toString().equals(feedback)){
            System.out.println("equal"+TestType.FEEDBACK.toString());
        }else{
            System.out.println("no"+TestType.FEEDBACK.toString());
        }

        //这种才没问题
        if(TestType.FEEDBACK.getFieldType().equals(feedback)){
            System.out.println("equal"+TestType.FEEDBACK.toString());
        }else{
            System.out.println("no"+TestType.FEEDBACK.toString());
        }
    }

}
public enum TestType {

    FEEDBACK("feedback");

    private String fieldType;

    private TestType(String fieldType) {
        this.fieldType = fieldType;
    }

    public String getFieldType() {
        return fieldType;
    }

    public static TestType getFieldType(String fieldType) {
        for (TestType type : TestType.values()) {
            if (type.getFieldType().equalsIgnoreCase(fieldType)) {
                return type;
            }
        }
        return null;
    }
}
时间: 2024-11-05 12:12:37

枚举类比较的陷阱的相关文章

Java 枚举(enum) 详解7种常见的用法

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { GREEN, YE

2020.1.25 Java枚举详解

Java枚举 枚举类型是什么 JDK5引入了一种新特性,关键字enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这就是枚举类型. 一个枚举的简单例子 enum SeasonEnum { SPRING,SUMMER,FALL,WINTER; } 枚举类的常用方法 Enum 常用方法有以下几种: name():返回enum实例声明时的名字 ordinal();返回一个int值,表示enum 实例在声明的次序 equals();返回布尔值,enum实例

bzoj2246: [SDOI2011]迷宫探险

2246: [SDOI2011]迷宫探险 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 118[Submit][Status][Discuss] Description 这是一个单人游戏. 游戏开始时,玩家控制的人物出生在迷宫的某个位置,玩家的目标是控制人物走到迷宫的某个出口(出口可能有多个).迷宫里有k类陷阱(用"A"."B"."C"--表示,相同字母代表相同类型的陷阱

JDK几个高版本的新特性

JDK 高版本的新特性 1.JDK5的新特性: 自动拆装箱 见Integer部分笔记 泛型 增强for循环 静态导入 可变参数 见集合部分笔记 枚举 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例.这才能是枚举类. 我们自己定义枚举类比较麻烦,所以,java就提供了枚举类供我们使用. 格式是:只有枚举项的枚举类 publi

BZOJ.2246.[SDOI2011]迷宫探险(DP 记忆化搜索 概率)

题目链接 求最大的存活概率,DP+记忆化. 用f[s][x][y][hp]表示在s状态,(x,y)点,血量为hp时的存活概率. s是个三进制数,记录每个陷阱无害/有害/未知. 转移时比较容易,主要是在陷阱未知时需要知道当前状态这个陷阱为有害/无害的概率,并用这两个概率相加. 如何求某个状态下未知陷阱是否有害的概率呢(以下求有害概率,即 有害/(有害+无害)) DFS枚举每个陷阱已知有害/无害/未知的状态,我们需要处理未知陷阱在该状态下的概率. 枚举每个未知的陷阱,再枚举2^K的概率数组,只有当满

.NET陷阱之六:从枚举值持久化带来大量空间消耗谈起

好长时间没有写博文了,今天继续. 这次跟大家分享的内容起因于对一个枚举值列表的序列化,下面简化后的代码即能重现.为了明确起见,我显式指定了枚举的基础类型. // 定义一个枚举类型. public enum SomeEnum :int { First, Second, Third, ... ... } // 重现问题的代码. var list = new List<SomeEnum>(); for (int i = 0; i < 1000; ++i) { list.Add((SomeEnu

LINQ中的陷阱--TakeWhile&amp;SkipWhile

在用TakeWhile,SkipWhile设置陷阱之前,我们先来看一看他们的兄弟Take和Skip: public static IEnumerable<T> Take<T>(IEnumerable<T> source, int count) public static IEnumerable<T> Skip<T>(IEnumerable<T> source, int count) 这两个操作符从字面上看就能理解其含义.Take将枚举

Swift中文教程(六)--枚举和结构

原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). 1 enum Rank: Int { 2 case Ace = 1 3 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 4 case Jack, Queen, King 5 func simpleDescription() -> Stri

JavaScript的陷阱

这本来是翻译Estelle Weyl的<15 JavaScript Gotchas>,里面介绍的都是在JavaScript编程实践中平时容易出错或需要注意的地方,并提供避开这些陷阱的方法,总体上讲,就是在认清事物本质的基础样要坚持好的编程习惯,其实这就是Douglas Crockford很久以前提出的JavaScript风格要素问题了,有些内容直接是相同的,具体请看<Javascript风格要素(1)>和<Javascript风格要素(2)>.在翻译的过程中,我又看到了