gpt4 book ai didi

java - 获取实现接口(interface)的通用枚举的值

转载 作者:行者123 更新时间:2023-12-04 16:25:45 25 4
gpt4 key购买 nike

我有以下界面:

public interface GenericMethods {
public String getString();
}
通过这个接口(interface),我实现了这个枚举:
public enum SpecificEnum implements GenericMethods {
A("NOT"), B("RELATED"), C("TEXT");

SpecificEnum(String string) {
this.string = string;
}

private String string;

@Override
public String getString() {
return this.string;
}
}
现在,我希望能够使用参数 SpecificEnum.class 调用函数并可以调用 values()该参数上的函数,以及返回数组元素上的接口(interface)方法。像这样的东西:
class Main {
public static void main(String[] args) {
for (GenericMethods gm : getEnums(SpecificEnum.class)) {
System.out.printf(gm.getString());
}
}

public static T[]<T extends GenericMethods> getEnums(Class<T> enum1) {
enum1.values();
}
}
但是,经过大量搜索,我还没有遇到使用泛型与同时实现接口(interface)的枚举的情况。我也对泛型类型进行了很多思考,但我找不到能够调用 values() 的正确语法。在通用枚举类上。主要目标是以相同的方式管理多个相关的枚举。

最佳答案

我怀疑您可能正在寻找类似的东西:

public static <T extends Enum<T> & GenericMethods> T[] getEnums(Class<T> enum1) {
return enum1.getEnumConstants();
}

public static void main(String[] args) {
for (GenericMethods gm : getEnums(SpecificEnum.class)) {
System.out.println(gm.getString());
}
}
结果:
(演示: https://ideone.com/v6on2p)
NOT
RELATED
TEXT
变化:
  • 搬家 <T extends GenericMethods>在返回类型之前,因为只有泛型方法可以声明其泛型类型。
  • 将泛型类型修改为 <T extends Enum<T> & GenericMethods>除了实现 GenericMethods
  • 之外,强制 T 也是某些 Enum 的子类型
  • 二手 getEnumConstants()而不是 values()因为我们正在使用 Class , 不是 enum类型。
  • 关于java - 获取实现接口(interface)的通用枚举的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64595676/

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