java之枚举(enum)

enum 的全称为 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

package com.xbl.springmvc.iterator;

public enum Season {
    // enum 对象加一下 num 的属性和 getNum() 的方法:
    SPRING(1),SUMMER(2),
    AUTUMN(3){
        @Override
        public boolean isRest() {
            return true;
        }
    },
    WINTER(4){
        @Override
        public boolean isRest() {
            return true;
        }
    };

    private Season(int num) {
        this.num = num;
    }

    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public boolean isRest() {
        return false;
    }
}
package com.xbl.springmvc.iterator;

import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Map;

public class SeasonTest {
    public static void main(String[] args) {
        System.out.println("test----enum");
        testEnum();
        System.out.println("test----enumSet");
        enumSetTest();
        System.out.println("test----enumMap");
        enumMapTest();
    }

    private static void testEnum() {
        Season[] season = Season.values();
        System.out.println(season.toString());
        System.out.println("夏天:"+Season.SUMMER.isRest());
        System.out.println(season[2].name()+":"+season[2].isRest());
        System.out.println("冬天:"+Season.WINTER.isRest());
        System.out.println("枚举含有的数量:"+season.length);
        System.out.println("valueOf:"+Season.valueOf("SPRING")+"-->"+Season.valueOf("SPRING").getClass());
        for (Season s:season) {
            System.out.print(s.getNum()+":");
            System.out.println(s.name());
            if (s.equals(Season.WINTER)) {
                //比较此枚举与指定对象的顺序 int compareTo(E o)
                System.out.println("冬天相比夏天:"+s.compareTo(Season.SUMMER));
                System.out.println("夏天相比冬天:"+Season.SUMMER.compareTo(s));
                //返回与此枚举常量的枚举类型相对应的 Class 对象 Class<E> getDeclaringClass()
                System.out.println(s.getDeclaringClass());
                //返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)int ordinal()
                System.out.println(s.ordinal());
                //返回枚举常量的名称,它包含在声明中。
                System.out.println(s.toString());
            }
        }
    }

    private static void enumSetTest() {
        EnumSet<Season> seasons = EnumSet.allOf(Season.class);
        for (Season s : seasons) {
            System.out.println(s.name()+":"+s.getNum()+"-->stauts:"+s.isRest());
        }
    }

    private static void enumMapTest() {
        EnumMap<Season, String> seasonString = new EnumMap<>(Season.class);
        seasonString.put(Season.SPRING, "春天");
        seasonString.put(Season.WINTER, "冬天");
        for (Iterator<Map.Entry<Season, String>> iterator = seasonString.entrySet().iterator();iterator.hasNext();) {
            Map.Entry<Season, String> entry = iterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }

}
"C:\Program Files\Java\jdk1.8.0_131\bin\java.exe" "-javaagent:E:\tools\IntelliJ IDEA 2019.2\lib\idea_rt.jar=60012:E:\tools\IntelliJ IDEA 2019.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;E:\model\out\production\model" com.xbl.springmvc.iterator.SeasonTest
test----enum
[Lcom.xbl.springmvc.iterator.Season;@1540e19d
夏天:false
AUTUMN:true
冬天:true
枚举含有的数量:4
valueOf:SPRING-->class com.xbl.springmvc.iterator.Season
1:SPRING
2:SUMMER
3:AUTUMN
4:WINTER
冬天相比夏天:2
夏天相比冬天:-2
class com.xbl.springmvc.iterator.Season
3
WINTER
test----enumSet
SPRING:1-->stauts:false
SUMMER:2-->stauts:false
AUTUMN:3-->stauts:true
WINTER:4-->stauts:true
test----enumMap
SPRING:春天
WINTER:冬天

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值