Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回枚举';s值,而不是API响应中Spring boot中的名称_Java_Rest_Api_Spring Boot_Enums - Fatal编程技术网

Java 返回枚举';s值,而不是API响应中Spring boot中的名称

Java 返回枚举';s值,而不是API响应中Spring boot中的名称,java,rest,api,spring-boot,enums,Java,Rest,Api,Spring Boot,Enums,我的枚举定义如下: public enum IntervalType { HOUR(3600), DAY(3600*24), WEEK(3600*24*7), MONTH(3600*24*30); public Integer value; IntervalType() {} IntervalType(Integer value) { this.value = value; } @JsonValue

我的枚举定义如下:

public enum IntervalType {
    HOUR(3600),
    DAY(3600*24),
    WEEK(3600*24*7),
    MONTH(3600*24*30);

    public Integer value;

    IntervalType() {}

    IntervalType(Integer value) {
        this.value = value;
    }

    @JsonValue
    public Integer toValue() {
        return this.value;
    }

    @JsonCreator
    public static IntervalType getEnumFromValue(String value) {
        for (IntervalType intervalType : IntervalType.values()) {
            if (intervalType.name().equals(value)) {
                return intervalType;
            }
        }
        throw new IllegalArgumentException();
    }

    @Override
    public String toString() {
        return this.name();
    }
}
我的响应类定义如下:

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IntervalType {

    @JsonProperty("interval_type")
    @Enumerated(EnumType.STRING)
    private IntervalType intervalType;
}
我试图用一个响应实体从我的spring启动应用程序返回它,它给出的是enum的值,而不是它的名称


我需要做什么来更改响应,使其具有名称而不是枚举的值?

您必须添加一个以值为参数的构造函数:

public enum IntervalType {
    HOUR(3600),
    DAY(3600*24),
    WEEK(3600*24*7),
    MONTH(3600*24*30);

    private int value;

    ...

    private IntervalType(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }
}
一般来说,你这样称呼它:

System.out.println(IntervalType.DAY.getValue()); // -> 86400
System.out.println(IntervalType.DAY); // -> DAY

您必须添加一个值为参数的构造函数:

public enum IntervalType {
    HOUR(3600),
    DAY(3600*24),
    WEEK(3600*24*7),
    MONTH(3600*24*30);

    private int value;

    ...

    private IntervalType(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }
}
一般来说,你这样称呼它:

System.out.println(IntervalType.DAY.getValue()); // -> 86400
System.out.println(IntervalType.DAY); // -> DAY

如果需要枚举的名称,请使用方法name()即:
IntervalType.DAY.name()

/**
*返回此枚举常量的名称,与其
*枚举声明。
*
*大多数程序员应该使用{@link#toString}方法
*首选项,因为toString方法可能会返回
*一个更加用户友好的名称。此方法主要用于
*在特定情况下使用,正确性取决于获得
*确切名称,不会因版本而异。
*
*@返回此枚举常量的名称
*/
公共最终字符串名称(){
返回名称;
}

如果需要枚举的名称,请使用方法name()即:
IntervalType.DAY.name()

/**
*返回此枚举常量的名称,与其
*枚举声明。
*
*大多数程序员应该使用{@link#toString}方法
*首选项,因为toString方法可能会返回
*一个更加用户友好的名称。此方法主要用于
*在特定情况下使用,正确性取决于获得
*确切名称,不会因版本而异。
*
*@返回此枚举常量的名称
*/
公共最终字符串名称(){
返回名称;
}