比较 java 中的 2 个枚举
Comparing 2 enums in java
我手头有一些代码重构,看到多种方法采用不同的枚举对象,比较它们并执行一些逻辑。除了一些小的调整外,大多数这些方法在本质上是相同的。例如
private void method1(EnumType1 current,EnumType1 desired) {
if (current==desired) {
//perform some logic
}
}
private void method2(EnumType2 current,EnumType2 desired) {
if (current==desired) {
//perform some logic
}
}
其中的代码片段(执行一些逻辑可以使用模板模式替换,因为那里有一些基于特定枚举类型的特定逻辑)。我想知道我是否可以有一个新的方法来用下面的代码替换上面的2个方法
private void method(Object current,Object desired) {
if(current==desired) {
//perform some logic
}
}
我想知道当我将此方法用于不同的枚举类型时“==”逻辑是否正常工作(在我的问题中,我已经引用了 2 种不同的枚举类型 - Enum1 和 Enum2),例如说 5不同类型的枚举。我用 3-4 个不同的枚举 类 测试了这个逻辑,里面有多个值,发现它工作正常,但也想在这个论坛上查看(同时我继续阅读更多关于枚举的信息)
如果您需要有关我的问题的任何其他详细信息,请告诉我。
这看起来像是一个通用方法的案例。
private <E extends Enum<E>> void myMethod(E current, E desired) {
if (current == desired) {
....
}
}
类型参数E
用于确保您只能将枚举类型传递给此方法,并且只能传递两个相同类型的枚举,而不是两个不相关的枚举。
我手头有一些代码重构,看到多种方法采用不同的枚举对象,比较它们并执行一些逻辑。除了一些小的调整外,大多数这些方法在本质上是相同的。例如
private void method1(EnumType1 current,EnumType1 desired) {
if (current==desired) {
//perform some logic
}
}
private void method2(EnumType2 current,EnumType2 desired) {
if (current==desired) {
//perform some logic
}
}
其中的代码片段(执行一些逻辑可以使用模板模式替换,因为那里有一些基于特定枚举类型的特定逻辑)。我想知道我是否可以有一个新的方法来用下面的代码替换上面的2个方法
private void method(Object current,Object desired) {
if(current==desired) {
//perform some logic
}
}
我想知道当我将此方法用于不同的枚举类型时“==”逻辑是否正常工作(在我的问题中,我已经引用了 2 种不同的枚举类型 - Enum1 和 Enum2),例如说 5不同类型的枚举。我用 3-4 个不同的枚举 类 测试了这个逻辑,里面有多个值,发现它工作正常,但也想在这个论坛上查看(同时我继续阅读更多关于枚举的信息)
如果您需要有关我的问题的任何其他详细信息,请告诉我。
这看起来像是一个通用方法的案例。
private <E extends Enum<E>> void myMethod(E current, E desired) {
if (current == desired) {
....
}
}
类型参数E
用于确保您只能将枚举类型传递给此方法,并且只能传递两个相同类型的枚举,而不是两个不相关的枚举。