나는이 질문이 몇 년 전이라는 것을 알고 있지만, 그 동안 Java 8은 우리에게 Optional , 나는 (그것을 사용하여 솔루션을 제공 할 거라고 생각 Stream과 Collectors) :
public enum PcapLinkType {
DLT_NULL(0),
DLT_EN3MB(2),
DLT_AX25(3),
private final int value;
private PcapLinkType(int value) { this.value = value; }
private static final Map<Integer, PcapLinkType> map;
static {
map = Arrays.stream(values())
.collect(Collectors.toMap(e -> e.value, e -> e));
}
public static Optional<PcapLinkType> fromInt(int value) {
return Optional.ofNullable(map.get(value));
}
}
Optional 처럼 null : (유효한) 값이없는 경우를 나타냅니다. 그러나 또는 사례 를 확인하는 것을 잊을 수 있기 때문에 더 형식이 안전한 대안 null또는 기본값 입니다. 둘 다 유효한 값입니다! 반대로 유형의 변수 에는 값을 할당 할 수 없습니다 . 먼저 유효한 값을 확인합니다.DLT_UNKNOWNnullDLT_UNKNOWNPcapLinkTypeOptional<PcapLinkType>PcapLinkTypeOptional
물론 DLT_UNKNOWN이전 버전과의 호환성이나 다른 이유 를 위해 유지 하려면 Optional이 경우에도 계속 사용할 수 있습니다.orElse() 하여 기본값으로 지정할 수 있습니다.
public enum PcapLinkType {
DLT_NULL(0),
DLT_EN3MB(2),
DLT_AX25(3),
DLT_UNKNOWN(-1);
private final int value;
private PcapLinkType(int value) { this.value = value; }
private static final Map<Integer, PcapLinkType> map;
static {
map = Arrays.stream(values())
.collect(Collectors.toMap(e -> e.value, e -> e));
}
public static PcapLinkType fromInt(int value) {
return Optional.ofNullable(map.get(value)).orElse(DLT_UNKNOWN);
}
}