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
作为剩余枚举的空字符串
如果空字符串不是有效的情况之一(validword2
),那么只需添加一个条件来检查空字符串
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:我忘了更改它,但我仍然得到不同的结果。为什么你没有得到相同的结果?