如何在 Java 中打印所有枚举值?

新手上路,请多包涵
enum generalInformation {
    NAME {
        @Override
        public String toString() {
            return "Name";
        }
    },
    EDUCATION {
        @Override
        public String toString() {
            return "Education";
        }
    },
    EMAIL {
        @Override
        public String toString() {
            return "Email";
        }
    },
    PROFESSION {
        @Override
        public String toString() {
            return "Profession";
        }
    },
    PHONE {
        @Override
        public String toString() {
            return "Phone";
        }
    }
}

我知道这些信息在枚举中是可用的。

  1. 如何打印所有枚举值,如: print.generalInformation

输出:

姓名

教育

电子邮件

电话

  1. 如何将该枚举 generalInformation 作为另一个函数中的参数传递?

原文由 Reegan Miranda 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答
System.out.println(java.util.Arrays.asList(generalInformation.values()));

你的第二部分…与 interfaceclass

原文由 Stephen Connolly 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先,我将重构您的枚举以在构造函数参数中传递字符串表示形式。该代码在底部。

现在,要打印所有枚举值,您只需使用类似的东西:

 // Note: enum name changed to comply with Java naming conventions
for (GeneralInformation info : EnumSet.allOf(GeneralInformation.class)) {
    System.out.println(info);
}

使用 EnumSet 的替代方法是使用 GeneralInformation.values() ,但这意味着每次调用它时都必须创建一个新数组,这对我来说很浪费。诚然调用 EnumSet.allOf 每次也需要一个新对象……如果你经常这样做并且担心性能,你总是可以将它缓存在某个 _地方_。

您可以使用 GeneralInformation 就像任何其他类型的参数一样:

 public void doSomething(GeneralInformation info) {
    // Whatever
}

用一个值调用,例如

doSomething(GeneralInformation.PHONE);


使用构造函数参数重构

public enum GeneralInformation {
    NAME("Name"),
    EDUCATION("Education"),
    EMAIL("Email"),
    PROFESSION("Profession"),
    PHONE("Phone");

    private final String textRepresentation;

    private GeneralInformation(String textRepresentation) {
        this.textRepresentation = textRepresentation;
    }

    @Override public String toString() {
         return textRepresentation;
    }
}

使用您 当前 的值,您实际上可以自动将名称转换为标题大小写 - 但从长远来看这不会非常灵活,而且我认为这个显式版本更简单。

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题