gpt4 book ai didi

java - 创建限制用户仅传递一种枚举的方法的更好方法

转载 作者:行者123 更新时间:2023-11-30 06:11:54 26 4
gpt4 key购买 nike

我有一个接口(interface),它只能被枚举覆盖 -

interface Parent{
int someMethod();
}

我将在其中传递 Parent 的实现者的方法。此方法希望限制用户传递枚举以外的任何其他实现器 -

public static <T extends Enum<? extends Parent>> T fromInt(Class<T> enumClass){}

现在的问题是

  1. 枚举签名不干净加上使用 ?
  2. 为了访问父类的someMethod,需要在方法中进行类型转换。如果我们喜欢这样访问它 -

    Arrays.stream(enumClass.getEnumConstants())
    .filter(ev -> ((Parent)ev).someMethod() == someVal)
    .findFirst().get();

是否有更好的方法来创建此方法的签名来解决这些问题?

最佳答案

您不能强制接口(interface)的实现者只能是枚举。

但是,您可以通过声明类型 T 来实现您想要的效果应该是一个枚举类型,T extends Enum<T> , 和一个 Parent类型,带有 & Parent . &用于声明多个接口(interface)的交集。它确保在方法中,T可以绑定(bind)到 EnumParent .

这将是一个实现:

public static <T extends Enum<T> & Parent> T fromInt(Class<T> enumClass) {
return Arrays.stream(enumClass.getEnumConstants())
.filter(ev -> ev.someMethod() == 1)
.findFirst()
.get();
}

关于java - 创建限制用户仅传递一种枚举的方法的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com