我正在用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);
我感谢任何可以提前帮助的人。
谢谢!
-Eli
答案 0 :(得分:2)
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