gpt4 book ai didi

java - ArrayUtils.contains 对于已存在的字符串返回 false

转载 作者:行者123 更新时间:2023-12-02 11:17:48 25 4
gpt4 key购买 nike

为什么我的输出显示 NOOOO?

UserRole.java

public enum UserRole {
ROLE_X("ROLE_X"), //
ROLE_Y("ROLE_Y"), //
ROLE_Z("ROLE_Z"), //
OTHER_X("OTHER_X"),
OTHER_Y("OTHER_Y"),
OTHER_Z("OTHER_Z");


private final String name;

private UserRole(String name) {
this.name = name;
}

public String getName() {
return this.name;
}

public boolean hasName(String name) {
return this.name.equals(name);
}

public static UserRole[] ROLES = { ROLE_X, ROLE_Y, ROLE_Z };
public static UserRole[] OTHER = { OTHER_X, OTHER_Y, OTHER_Z };

}

TestCode.java

import java.text.ParseException;
import org.apache.commons.lang.ArrayUtils;

public class TestCode{
public static void main(String[] args) throws ParseException {

String name = "ROLE_X";

if(ArrayUtils.contains(UserRole.ROLES, name)) {
System.out.println("---ROLES---");
} else {
System.out.println("NOOOO");
}



}
}

输出:

最佳答案

因为 enum 不是 String

您有一个 enum 实例数组,但您正在搜索一个 String,它永远不会 equals()枚举

用途:

UserRole.valueOf(str)

并捕获IllegalArgumentException,当字符串与实例不匹配时抛出该异常。

<小时/>

您的大部分枚举类都可以删除:

  • 您根本不需要name字段。每个枚举都有一个 .name() 方法,该方法以字符串形式返回枚举实例名称
  • 每个枚举类都有一个 .values() 方法,该方法将所有实例作为数组返回

关于java - ArrayUtils.contains 对于已存在的字符串返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42137071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com