我可以用特定的int值定义枚举值,但我也想表示Java枚举中的某些特定范围。我的意思是:
public enum SampleEnum {
A(1),
B(2),
C(3),
D(4),
//E([5-100]);
private SampleEnum(int value){
this.value = value;
}
private final int value;
}
例如,这里可以用一个值(在这里为“ E”)表示5到100之间的范围吗?或者有更好的方法吗?
答案 0 :(得分:2)
数字5和100是两个不同的值,因此在这里无法存储一个值。
但是在枚举中定义两个值很容易,即低值和高值。对于范围仅为1的那些,请将上限和下限都设置为相同的值。
enum SampleEnum {
A(1),
B(2),
C(3),
D(4),
E(5, 100);
private SampleEnum(int value){
this.low = value;
this.high = value;
}
private SampleEnum(int low, int high) {
this.low = low;
this.high = high;
}
private final int low;
private final int high;
}
答案 1 :(得分:0)
似乎您实际上正在处理所有枚举的范围。 Provider.of<AuthService>(context);
与其余字符之间的唯一区别是,其余字符在该范围内只有一个值。
我将枚举更改为采用E
或某种low/high
对象。
这是一个使用Range
的示例,由于能够在IntStream.range
功能中使用其所有不错的构建,因此我很喜欢它。
IntStream
这是检查数字是否在范围内的用法示例:
public enum SampleEnum {
A( () -> IntStream.range(1, 2) ),
B( () -> IntStream.range(2, 3) ),
C( () -> IntStream.range(3, 4) ),
D( () -> IntStream.range(4, 5) ),
E( () -> IntStream.range(5, 101) );
private Supplier<IntStream> rangeFactory = null;
private SampleEnum(Supplier<IntStream> rangeFactory){
this.rangeFactory = rangeFactory;
}
public IntStream getRange() {
return rangeFactory.get();
}
}