Java 获取枚举值作为字符串列表

Java 获取枚举值作为字符串列表,java,enums,Java,Enums,我有以下枚举,希望将其转换为字符串值列表: @Getter @AllArgsConstructor public enum danger{ Danger("DGR"), Normal("NOR"); /** * The value. */ private final String value; } 所需输出:DGR和NOR列表 我当前的解决方案如下所示: List<String> dangerlist = Stream.of

我有以下枚举,希望将其转换为字符串值列表:

@Getter
@AllArgsConstructor
public enum danger{

    Danger("DGR"),
    Normal("NOR");


    /**
     * The value.
     */
    private final String value;
}
所需输出:DGR和NOR列表

我当前的解决方案如下所示:

List<String> dangerlist = Stream.of(DangerousShipment.values())
                .map(Enum::name)
                .collect(Collectors.toList());
List dangerlist=Stream.of(dangerousshipping.values())
.map(枚举::名称)
.collect(Collectors.toList());

问题是,我只能选择枚举的名称,而不能选择实际值。

为值添加一个getter:

public enum DangerShipment {
    // Code from the OP omitted for brevity

    public String getValue() {
        return value;
    }
}
并在构建列表时使用它:

List<String> dangerlist = Stream.of(DangerousShipment.values())
                                .map(DangerousShipment::getValue)
                                .collect(Collectors.toList());
List dangerlist=Stream.of(dangerousshipping.values())
.map(危险装运::getValue)
.collect(Collectors.toList());

以下是完整的代码:

    public enum danger {

        Danger("DGR"), Normal("NOR");

        private danger(String value) {
            this.value = value;
        }

        /**
         * The value.
         */
        private final String value;

        /**
         * @return the value
         */
        public String getValue() {
            return value;
        }
    }

List<String> dangerlist = Stream.of(danger.values())
                                .map(x -> x.getValue())
                                .collect(Collectors.toList());

公共枚举危险{
危险(“DGR”)、正常(“NOR”);
私人危险(字符串值){
这个值=值;
}
/**
*价值。
*/
私有最终字符串值;
/**
*@返回值
*/
公共字符串getValue(){
返回值;
}
}
List dangerlist=Stream.of(danger.values())
.map(x->x.getValue())
.collect(Collectors.toList());

将映射替换为
dangerousshipping::getValue
顺便说一句,按照惯例,枚举实例名称应全部大写为常量。所以
危险
正常
。枚举类名的首字母大写为
Danger
,而不是
Danger
。最后,您可以考虑一个更具描述性的枚举名称,例如<代码> DangerLevel < /代码>。