Java 向枚举字段添加其他信息

Java 向枚举字段添加其他信息,java,enums,Java,Enums,我有以下枚举组,我正在取消该枚举以返回正确的id字符串,具体取决于参数word2字符串 代码1 public enum Group { KG1("10460"), KG2("10461"), KG3("10462"), KG4("10463"); private Group (String id){ this.id = id; } private final String id; public String

我有以下枚举
,我正在取消该枚举以返回正确的id字符串,具体取决于参数
word2
字符串

代码1

public enum Group {

    KG1("10460"),
    KG2("10461"),
    KG3("10462"),
    KG4("10463");

    private Group (String id){
        this.id = id;
    }

    private final String id;

    public String getId(){
        return id;
    }

    public static String getGroupByWord2(String word2){
        if(word2.contains("other company")){
            return KG3.toString();
        }else if(word2.contains("neu company")){
            return KG1.toString();
        }

        return "";
    }

    @Override
    public String toString() {
        return getId();
    }

}
现在,我想将信息
其他公司、neu公司
添加到enum字段中。因此,我将枚举更改为下面的表单,但我面临问题 它不能提供与
代码1
相同的结果。如何将字符串
other company,neu company
添加到枚举字段中,以提供与
code 1
中相同的结果

代码2

public enum Group {

KG1("10460", "neu company"),
KG2("10461", ""),
KG3("10462", "other company"),
KG4("10463", "");

    private Group (String id, String word){
        this.id = id;
        this.word = word;
    }

    private final String id;
    private final String  word;

    public String getId(){
        return id;
    }

    public String getWord() {
        return word;
    }

    public static String getGroupByWord2(String word2){

        for (Group group : Group.values()) {
            if (word2.contains( group.getWord())) {
                return group.getId();
            }      
        }

        return null;
    }

    @Override
    public String toString() {
        return getId();
    }

}

在第一个版本中,检查
word2
是否为
other company
neu company
,并返回相应的枚举字符串表示形式。但在第二个示例中,您正在检查
word2.contains(group.getWord())
,当
group.getWord()
为空字符串时,它将返回true,因此不能将
word
作为剩余枚举的空字符串

如果空字符串不是有效的情况之一(valid
word2
),那么只需添加一个条件来检查空字符串

if (!group.getWord().isEmpty() && word2.contains(group.getWord()))

另一个区别是,在最后(未找到匹配项时)返回
null
,而不是版本1中的空字符串。

代码实际上工作正常,两个代码段之间的区别是equalsIgnoreCase()vs contains(),KG2值是空字符串,它将匹配任何非空字符串值。将contains()更改为equals()的测试和格式化代码如下:

 public static void main(String[] args) {
    System.out.println(Group.getGroupByWord2("neu company")); //10460
    System.out.println(Group.getGroupByWord2("other company")); //10462
    System.out.println(Group.getGroupByWord2("non existing")); //null
    System.out.println(Group.getGroupByWord2(" ")); //null
}


public enum Group {

    KG1("10460", "neu company"),
    KG2("10461", ""),
    KG3("10462", "other company"),
    KG4("10463", "");

    Group(String id, String word) {
        this.id = id;
        this.word = word;
    }

    private final String id;
    private final String word;

    public String getId() {
        return id;
    }

    public String getWord() {
        return word;
    }

    public static String getGroupByWord2(String word2) {
        for (Group group : Group.values()) {
            if (word2.equalsIgnoreCase(group.getWord())) {
                return group.toString();
            }
        }

        return null;
    }

    @Override
    public String toString() {
        return getId();
    }

}

您在代码2中使用了
word2.contains()
,在代码1中使用了
word2.equalsIgnoreCase()
。为什么你会期望相同的结果?@TedHopp:我忘了更改它,但我仍然得到不同的结果。为什么你没有得到相同的结果?