返回枚举值的前一个值

作者: _夏兮 | 来源:发表于2018-03-19 17:21 被阅读7次

一、什么是枚举

枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。

二、枚举的定义

定义枚举时候使用enum,与使用class。

public class EnumDemo {

    public static void main(String[] args){

        //直接引用

        Fruit fruit = Fruit.APPLE;

        System.out.println(fruit);

    }

    //定义枚举类型

    enum Fruit{

        APPLE, PEAR, ORANGES, BANANA

    }

}

三、小问题,如何循环读取枚举值

public class EnumDemo {

    public static void main(String[] args){

        Fruit[] arraryFruits = new Fruit[]{Fruit.APPLE, Fruit.PEAR, Fruit.ORANGES, Fruit.BANANA};

        for(int i = 0; i < arraryFruits.length; i++){

            System.out.println(arraryFruits[i].ordinal()+":"+arraryFruits[i].name());

        }

    }

}

//定义枚举类型

enum Fruit{

    APPLE, PEAR, ORANGES, BANANA

}

四、如何返回枚举值的前一个值

1、定义一个枚举类

package com.star.demo;

public enum  EnumFurit {

    APPLE("apple","苹果"),

    PEAR("pear","梨"),

    ORANGES("orange","橙子"),

    BANANA("banana","香蕉");

    private String value;

    private String desc;

    private EnumFurit(String value,String desc){

        this.setValue(value);

        this.setDesc(desc);

    }

    public String getValue() {

        return value;

    }

    public String getDesc() {

        return desc;

    }

    public void setValue(String value) {

        this.value = value;

    }

    public void setDesc(String desc) {

        this.desc = desc;

    }

}

2、建立一个与枚举类一致的数据结构类

package com.star.demo;

public class FruitEntity {

    private String value;

    private String desc;

    public String getValue() {

        return value;

    }

    public String getDesc() {

        return desc;

    }

    public void setValue(String value) {

        this.value = value;

    }

    public void setDesc(String desc) {

        this.desc = desc;

    }

}

3、实现 

方法:@letEnumToList 将枚举数据转换成list

@getBeforeEnum 通过位置获取前一个值 第一个返回最后一个

package com.star.demo;

import java.util.ArrayList;

import java.util.List;

public class EnumDemo {

    public void getBeforeEnum(EnumFurit fruit){

        List<FruitEntity> fruitEntityList = this.letEnumToList();

        int index = fruit.ordinal();

        if( 0 == index){

            int last = fruitEntityList.size();

            System.out.println(fruitEntityList.get(last-1).getValue() + ":" + fruitEntityList.get(last-1).getDesc());

        }else{

            System.out.println(fruitEntityList.get(index-1).getValue() + ":" + fruitEntityList.get(index-1).getDesc());

        }

    }

    public List<FruitEntity> letEnumToList(){

        List<FruitEntity> fruitList = new ArrayList<FruitEntity>();

        for(EnumFurit furit : EnumFurit.values()){

            FruitEntity fruitEntity = new FruitEntity();

            fruitEntity.setValue(furit.getValue());

            fruitEntity.setDesc(furit.getDesc());

            fruitList.add(fruitEntity);

        }

        return fruitList;

    }

}

4、测试 

使用testng进行单元测试

package com.star.demo;

import org.testng.annotations.BeforeClass;

import static org.testng.Assert.*;

public class EnumDemoTest {

    public EnumDemo enumDemo;

    @BeforeClass

    public void setup() throws Exception{

        enumDemo = new EnumDemo();

    }

    @org.testng.annotations.Test

    public void testGetBeforeEnum_apple_banana() throws Exception {

        enumDemo.getBeforeEnum(EnumFurit.APPLE);

    }

    @org.testng.annotations.Test

    public void testGetBeforeEnum_banana_orange() throws Exception {

        enumDemo.getBeforeEnum(EnumFurit.BANANA);

    }

}

写在最后,首先当我看到这个题目的时候,我的第一反应是用swith..,case...实现,但是如添加枚举值,相应的需要改swith了。然后想用list去实现了,感觉还是有点麻烦。。

相关文章

  • 返回枚举值的前一个值

    一、什么是枚举 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(c...

  • MYSQL case when

    按条件返回某些字段值。例如枚举值。

  • 枚举帮助类EnumHelper--NetCore3/.Net5

    返回一个枚举值,该值指示指定枚举的描述名称中存在给定的整数值或其字符串名称,如若不存在则返回指定默认值 枚举转换下...

  • Swift 2.0 学习笔记 8_枚举

    //: 枚举 // Swift 中的枚举不必给每一个枚举成员提供一个值. 如果给枚举成员提供一个值(原始值), 则...

  • Object.keys方法之详解

    一、语法 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举...

  • 29.ES8-Object.values和Object.entr

    Object.values Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺...

  • Object.keys方法之详解

    语法: Object.keys(obj)参数:要返回其枚举自身属性的对象返回值:一个表示给定对象的所有可枚举属性的...

  • 枚举(Enum)

    目录 枚举语法 关联值 原始值 递归枚举 ** 在 Swift 中不必给每一个枚举成员提供一个值,如果给枚举成员提...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift 5 枚举

    枚举 关联值: 枚举的成员值和其他类型的值关联储存,存储在枚举变量中 原始值: 枚举成员使用相同的默认值预先对应,...

网友评论

    本文标题:返回枚举值的前一个值

    本文链接:https://www.haomeiwen.com/subject/dtwuqftx.html