将任何枚举传递到方法中

问题描述 投票:0回答:1

我正在用 Java 编写并尝试创建一个方法,该方法将采用我传递给它的任何 Enum 类,如下所述(大部分): Java:枚举的通用方法

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

这是我的方法版本:

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);

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

谢谢!

java methods input enums any
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.