我的代码使用两个库 - LibraryA 和 LibraryB。

LibraryA 定义了一个枚举:

public enum EnumA {
    FIRST,
    SECOND;
}

LibraryB 还定义了一个 enum :

public enum EnumB {
    ONE,
    TWO;
}

如何将代码中的这两个枚举聚合为单一类型 - 类或枚举,例如MyAggregatedEnum以便我可以枚举 EnumA 和 EnumB 中定义的值。

编辑:编辑以包含更具体的用例。 我想要一个Map<MyAggregatedEnum, TypeHandler> 此地图将静态创建。 对于每个单独的值,可以有不同的 TypeHandler。 例如。 对于FIRST ,可以有一个类型处理程序 - HandlerFirst ,对于ONE ,可以有一个类型处理程序 - HandlerOne ,依此类推。

抱歉没有在第一稿中添加这个。

我不能让库枚举来实现一些通用接口。

#1楼 票数:4 已采纳

这不适用于动态值; 但由于aggregateEnumList是静态创建的,它可能会解决您当前的问题。

interface MyAggregatedEnum {
    String getValue();
}

List<MyAggregatedEnum> aggregateEnumList = 
             List.of(EnumA.FIRST::getValue, EnumB.ONE::getValue);

printValues(aggregateEnumList);

最后一个片段中引用的getValue方法不是来自同一个 API,但它提供了MyAggregatedEnum.getValue()的实现( MyAggregatedEnum.getValue() ,它不必命名为getValue


编辑:在编辑过的问题之后,我建议您的解决方案与使用Enum类型本身一样简单:

Map<Enum<?>, TypeHandler> myMap = new HashMap<>();
myMap.put(EnumA.FIRST, someHandler);
myMap.put(EnumB.ONE, someOtherHandler);

...

TypeHandler firstHandler = myMap.get(EnumA.FIRST);
TypeHandler oneHandler = myMap.get(EnumB.ONE);

  ask by user2653062 translate from so

未解决问题?本站智能推荐:

1回复

如何进行双数组枚举查找

我已经声明了一个id和描述的枚举和坐标的双数组。 然后我宣布了我的阵列...... 然后我为我的地图的宽度和高度设置了一堆随机位置...... 现在我想遍历一组位置并从tiles [x] [y]中拉出locationId 此时如何撤回位置的第一个元素? 我想要特
2回复

如何使用枚举聚合事件

我有一个ScenarioGenerator类来生成Scenario 。 在Audit类中,我设置了函数来决定要生成多少个场景,并希望打印出每个枚举类型(在本例中为Gender )的出现次数。 我已经提到了计算数组中的出现次数(Java) 我用频率法统计出现次数,但是当生成的场景很多时,不知道如何
2回复

如何正确使用枚举? [复制]

这个问题在这里已经有了答案: 向 Java 中的枚举添加斜杠3 个回答 2 个月前关闭。 这是我的枚举: 我
2回复

复制枚举数组

嗨,我有一个枚举数组,这是我班上的一个领域。 我正在实现此类的克隆方法。 但是我对复制枚举数组有一些想法,但是复制枚举数组的正式方法是什么?
4回复

通过复制扩展枚举

我希望通过将XResult的值复制到XStatus中来“扩展”枚举XStatus中的XResult。 这就是我的做法。 如果在XResult中未找到item,则说明保留为空: 问题是,如果XResult不包含此类项目,它将抛出IllegalArgumentException。
2回复

将一个枚举复制到其他java

我有一个枚举让我们说enum A { value1, value2, value3}并且还有一个enum B { value1, value2, value3}即使这些枚举具有相似的值,它们也不能互换使用,因为它们存在于编码标准中不同的层次。 有没有办法将内容从一个复制到另一个? 默认情况下
7回复

对枚举进行子类化

是否有一种简单的方法来子类化Java enum ? 我问这个是因为我喜欢其中10个实现相同的接口,但它们对某些方法也有相同的实现,所以我想通过将所有相同的实现放在扩展Enum中间对象中来重用代码,它也是我需要的所有其他人的超类。 也许它不像我想的那么简单? 预先感谢
3回复

枚举进行计算

我们可以将对象传递给枚举抽象方法并在枚举中进行计算吗? 这是一个场景,我有四个常量,每个常量都有自己的值分配给它。 基于常量,我将在我的方法中进行计算。相反,我想在枚举中进行计算并希望获得响应。 为了在枚举中进行计算,我必须将两个/三个引用对象传递给枚举方法... 例如:将学校作为枚