我有一个如下所示的枚举列表 -
List<Status> statusList;
Run Code Online (Sandbox Code Playgroud)
状态定义如下
enum Status { YES , NO , MAYBE }
Run Code Online (Sandbox Code Playgroud)
该清单包含
Status stat = Status.YES;
statusList.add(stat);
Run Code Online (Sandbox Code Playgroud)
我有一个变量
Status statusVar = Status.YES;
Run Code Online (Sandbox Code Playgroud)
我正在尝试比较如下,但它不起作用,因为我猜它是比较参考.以下返回false.你能建议一个解决方案吗?
statusList.contains(statusVar)
Run Code Online (Sandbox Code Playgroud)
编辑:下面是无效的代码.状态是字符串而不是枚举
import java.util.ArrayList;
import java.util.List;
public class Test {
private enum Status {
YES , NO , MAYBE
}
public static void main (String[] args){
List<Status> statusList = new ArrayList<Status>();
String status = "YES";
statusList.add(Status.YES);
if(statusList.contains(status)){
System.out.println(" Yes ");
} else {
System.out.println(" No ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在执行包含,则使用包含它将更有效 EnumSet
Set<Status> status = EnumSet.of(Status.YES);
assert status.contains(Status.YES);
Run Code Online (Sandbox Code Playgroud)
但是,List<Status>也会奏效.
你是对的它确实比较了参考,但是如果你有的话,这只会失败
Status实际上是不同的.Status可以使用的新实例Unsafe.allocateInstance(Status.class)更有可能的是,你没有测试你的想法,而且情况并不完全如你所描述的那样.
| 归档时间: |
|
| 查看次数: |
7514 次 |
| 最近记录: |