gpt4 book ai didi

java - 将任何枚举传递给方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:42 30 4
gpt4 key购买 nike

我正在用 Java 编写并尝试创建一个方法,该方法将采用我传递给它的任何 Enum 类,如下所述(主要是): Java: Generic method for Enums

当我尝试将枚举传递给此类方法时遇到问题。它要我更改采用特定 Enum 类的方法。有谁知道我做错了什么?

这是我的方法版本:

public Class Presenter{
public static <E extends Enum<E>> List<String> getEnumString(Class<E> eClass){
List<String> returnList = new ArrayList<String>();

for (E en: EnumSet.allOf(eClass)){
returnList.add(en.name());
}
return returnList;
}
}

这是我试图传递的内容。错误是说参数不适用,它建议将上面的方法更改为仅采用 MyEnumClass:

MyEnumClass eclass;

List<STtring> string = presenter.getEnumString(eclass);

我感谢任何能提前提供帮助的人。

谢谢!

-伊莱

最佳答案

MyEnumClass eclass;

eClass 是对 MyEnumClass 对象的引用。您需要传递给函数的是类类型本身。语法是:

MyEnumClass.class

下面的代码会做你想做的。请注意,我传入的是 MyEnumClass.class,而不是变量。

import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;

public enum MyEnumClass
{
ENUM_1, ENUM_2, ENUM_3, ENUM_4, ENUM_5;

public static void main(String[] args)
{
for (String string : getEnumString(MyEnumClass.class))
System.out.println(string);
}

public static <E extends Enum<E>> List<String>
getEnumString(Class<E> eClass)
{
List<String> returnList = new ArrayList<String>();

for (E en : EnumSet.allOf(eClass))
{
returnList.add(en.name());
}

return returnList;
}
}

输出:

ENUM_1
ENUM_2
ENUM_3
ENUM_4
ENUM_5

关于java - 将任何枚举传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939255/

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