当Enum多用于集合判断的时候,可以使用这种方式

位域 不利于 判别。 也不利于理解。

Enum却利于判断

enumSet源代码学习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.canal.demo;

import java.util.EnumSet;
import java.util.Set;

public class ZookeeperHello {

private static final int ADD =1<<1; //2
private static final int DIVIDE =1<<2; //4
private static final int MULTIPLY =1<<3; //8
private static final int SUB =1<<4; //16


private static boolean apply(int code){
//TODO do logic here
return false;
}

private static boolean apply(Set<Operation> operations){
return operations.contains(Operation.ADD)||operations.contains(Operation.SUB);
}


private static enum Operation{
ADD(2),
DIVIDE(4),
MULTIPLY(8),
SUB(16);

private int code;

Operation(int code) {
this.code = code;
}

public int getCode() {
return code;
}

}


public static void main(String[] args) {

System.out.println(apply(ADD|SUB));
System.out.println(apply(EnumSet.of(Operation.ADD,Operation.DIVIDE)));

}
}