【问题标题】:Printing out all of enum values as type String in Java在 Java 中将所有枚举值打印为 String 类型
【发布时间】:2020-05-06 20:40:31
【问题描述】:

我有一个带有枚举值的枚举。我只想打印枚举值的列表。

不仅仅是枚举。我已经阅读了有关 Value Of 的信息,但发现这不是正确的做法。

这是我要打印的:

人们外出

人在

这是我的枚举,其中包含值。我添加了一个构造函数。

public enum People {
    OUT("People out"),
    IN("People in");

private final String name;

People(String name) {
    this.name = name;
  } 
}

获取枚举的方法是:

public String retrieveEnumValues() {
        return Stream.of(People.values()).
                map(People::name).collect(Collectors.joining("\n"));

    }

我在这里做错了什么?

【问题讨论】:

  • enumname() 方法是在隐式超类Enum 中声明的内置方法。它返回枚举常量名称,例如OUT,它是final,所以它不能被覆盖以返回其他任何东西。 --- People::name 被称为方法引用,那么你为什么认为它会解析为你的name 字段的值?
  • 我建议不要在枚举 name 中调用字段 - 与 name 方法混淆的范围太大。你能称之为不同的东西吗?

标签: java enums stream


【解决方案1】:

People::name 指的是标准枚举的方法名(),你应该为你的name 字段提供getter 并使用它People::getName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多