Java枚举类型-自动打印枚举



我试图写一个java函数,作为一个参数枚举类型(基于控制台菜单系统的一部分)。然后,该函数将打印枚举中的所有字符串表示形式。

枚举看起来像这样:

protected enum main{
    Option1,
    Option2,
    Option3,
    ...
    OptionN,
}

我的显示函数是这样的

public void displayMenu(Enum menu) {
     // Get values from enum type
     Enum menuOps = menu.values();
     // Iterate over values and print
     for(int i =0 ; i < menuOps.length; i++)
            System.out.println( i + menuOps[i].toString() );
}

我的问题:显然我一定没有正确地做这个。在这种情况下,"menu"参数对象没有values()方法。

期望的结果是displayMenu()函数的输出为:
Option1
Option2
Option3
...
OptionN

任何指针在哪里我做错了这个?关于如何实现这个功能有什么建议吗?

感谢,

新手

因为你的print方法不依赖于一个具体枚举实例,所以它应该基于一个具体枚举类,而不是这个类的实例

public static <T extends Enum<T>> void printEnum(Class<T> enumClass) {
    for (Enum<T> item : enumClass.getEnumConstants()) {
        System.out.println(item.toString());
    }
}
...
printEnum(MainEnum.class);

不是这样的,Enum项不知道其他项的存在。你必须查阅包含它的类:

for (Enum current : menu.getClass().getEnumConstants()) {
    System.out.println(current);
}

下面是该方法的泛型版本:

public static <K extends Enum<K>> void displayEnumValues(final K enumItem) {
    for (final Enum<K> current : enumItem.getClass().getEnumConstants()) {
        System.out.println(current);
    }
}

Migrate

public void displayMenu(Enum menu) {
     // Get values from enum type
     Enum menuOps = menu.values();

 public void displayMenu(main menu) {
     // Get values from enum type
     main[] menuOps = menu.values();

相关内容

  • 没有找到相关文章

最新更新