单元测试Unit Test 程序猿阵线联盟-汇总各类技术干货Java学习笔记

返回枚举值的前一个值

2018-03-19  本文已影响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去实现了,感觉还是有点麻烦。。

上一篇 下一篇

猜你喜欢

热点阅读