java 自定义枚举项的值及int和Enum的互相转换

来源:互联网 发布:js中json增加元素 编辑:程序博客网 时间:2024/05/29 12:28

C++中定义枚举的时候可以直接指定枚举项的值,如:"enum {MAX_LENGTH = 255};"。

其实Java也可以,今天学到了这种语法。C++的int和枚举互相转换使用强制类型转换即可,

但在Java中从int构造Enum需要自己实现(不过如果枚举值从0开始递增就简单了,参考第二段代码)。自定义枚举值代码如下:

==============================代码的分割线=======================================
enum FruitEnum {
    APPLE(1), ORANGE(2);    //    调用构造函数来构造枚举项


    private int value = 0;


    private FruitEnum(int value) {    //    必须是private的,否则编译错误
        this.value = value;
    }


    public static FruitEnum valueOf(int value) {    //    手写的从int到enum的转换函数
        switch (value) {
        case 1:
            return APPLE;
        case 2:
            return ORANGE;
        default:
            return null;
        }
    }


    public int value() {
        return this.value;
    }
}


public static void main(String[] args) {
    System.out.println(FruitEnum.APPLE.value());    //    1
    System.out.println(FruitEnum.ORANGE.value());    //   2
    System.out.println(FruitEnum.valueOf(1));        //  FruitEnum.APPLE
    System.out.println(FruitEnum.valueOf(2));        //  FruitEnum.ORANGE
}
/////////////////////////////////////////////////////////
如果枚举项的值从0开始递增满足需要的话,那就简单了:
enum MyEnum{
    FIRST_ELEMENT,
    SECOND_ELEMENT,
}


public static void main(String[] args) {
    System.out.println(MyEnum.FIRST_ELEMENT.ordinal());     //    0
    System.out.println(MyEnum.SECOND_ELEMENT.ordinal());    //    1
    System.out.println(MyEnum.values()[0]);        //  MyEnum.FIRST_ELEMENT
    System.out.println(MyEnum.values()[1]);        //  MyEnum.SECOND_ELEMENT
}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 榨果汁不甜怎么办 宝宝不会喝奶粉怎么办 两个月宝宝不长肉怎么办 打疫苗后发烧怎么办 孕期不爱吃水果怎么办 孕期很少吃水果怎么办 三个月小孩不吃奶粉怎么办 三个月宝宝偏瘦怎么办 破壁机打果汁有沫怎么办 宝宝7个月坐不稳怎么办 婴儿头睡偏了怎么办天 宝宝不爱趴着怎么办 宝宝喜欢竖着抱怎么办 婴儿抱习惯了怎么办 新生儿总让抱着放下就哭可怎么办 三个月宝宝认人怎么办 三个月的宝宝认生怎么办 一岁半宝宝尿黄怎么办 一岁多宝宝尿少怎么办 1岁宝宝一晚没尿怎么办 抗利尿激素少怎么办 小孩夜里尿多怎么办 一岁宝宝认生怎么办 婴儿一个月认生怎么办 婴儿大便带血丝怎么办 两个月宝宝认生怎么办 晚上宝宝认人怎么办 小孩长白头发怎么办 三个月婴儿脚力不足怎么办 未满月宝宝便秘怎么办 婴儿5天没拉大便怎么办 儿童三天没大便怎么办 婴儿4天没拉大便了怎么办 孩子不天天排便怎么办 宝宝便秘5天怎么办 小孩子3天便秘怎么办 宝宝4天没拉大便怎么办 儿童不拉大便怎么办 吃母乳没有大便怎么办 婴儿老是抓头皮怎么办 婴儿两天不大便怎么办