Java自定义枚举



我有一个表,并希望使用枚举保存状态。我创建了如下所示的enum

/**
 * Enumeration for Status
 * 
 * 
 * Current defined values are :
 * <ul>
 *  <li>ACTIVE = 1</li>
 *  <li>INACTIVE = 2</li>
 * </ul>
 */
public enum Status {
    /**
     * ACTIVE (Ordinal 1).
     */
    ACTIVE(1),
    /**
     * INACTIVE (Ordinal 2).
     */
    INACTIVE(2),

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

   public static void main (String ars[]){
       for (Status str : Status.values()) {
           System.out.println("====str==========="+str.name() +"::::::: "+str.ordinal());
       }
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }

}

如何从1得到序数。我的输出是这样的

====str===========ACTIVE::::::: 0
====str===========INACTIVE::::::: 1

实际上我已经将这个枚举映射到我的实体,我已经使用它如下

@Column(name = "STATUS",nullable=false)
    @Enumerated(EnumType.ORDINAL)
    private Status status; 

如何将Active状态保存为1…div ?

可以重写枚举的toString()方法,或者提供getter。

public enum Status {
    /**
     * ACTIVE (Ordinal 1).
     */
    ACTIVE(1),
    /**
     * INACTIVE (Ordinal 2).
     */
    INACTIVE(2); // Note the semicolon

    private final int value;
    private Status(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    // OR
    @Override
    public String toString() {
         return String.valueOf(value);
    }
}

你可以调用

System.out.println(ACTIVE); // toString is called

System.out.println(ACTIVE.getValue());

getValue()代替ordinal() ?ordinal()不会神奇地知道调用你的方法,它只是返回序数。

print str.getValue() .

ordinal给出默认值。

相关内容

  • 没有找到相关文章

最新更新