java枚举

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qiaziliping/article/details/79814490

一、概述

  • 枚举是jdk1.5新增的功能
  • 枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。
  • Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
  • 使用场合: 如根据编码获取一个字符串
    java
    SERVER_INNER(1,'服务器内部错误','zh-cn')

二、特征

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3.Enum默认实现了java.lang.Comparable接口。
4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
6.Enum还提供了values()方法,这个方法使你能够方便的遍历所有的枚举值。 Color [] arr = Color.values();
7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

三、例子

package com.hesvit.test;
public enum Week {
    MONDAY(1,"星期一","工作"),
    TUESDAY(2,"星期二","吃饭"),
    WEDNESDAY(3,"星期三","喝酒"),
    THURSDAY(4,"星期四","打牌"),
    FRIYDAY(5,"星期五","旅游"),
    SATURDAY(6,"星期六","搬砖"),
    SUNDAY(7,"星期日","开车");

    private Week(int type,String weekname,String something) {
        this.type = type;
        this.weekname = weekname;
        this.something = something;
    }

    private int type;
    private String weekname;
    private String something;


    public Integer getType() {
        return type;
    }
    public String getWeekname() {
        return weekname;
    }
    public String getSomething() {
        return something;
    }

    /**
     * 根据type获取枚举
     * LIPING
     */
    public static Week getWeekByType(int type) {
        for(Week wk : values()) {
            if (wk.type == type) {
                return wk;
            }
        }
        return null;
    }


    public static void main(String[] args) {
        System.out.println("打印-1>:"+Week.FRIYDAY.getType());
        System.out.println("打印-2>:"+Week.FRIYDAY.getWeekname());
        System.out.println("打印-3>:"+Week.FRIYDAY.toString());
        System.out.println("打印-4>:"+Week.valueOf("FRIYDAY"));
        System.out.println("打印-5>:"+Week.getWeekByType(Week.SUNDAY.getType()).getSomething());
    }
    // 打印的结果
    //  打印-1>:5
    //  打印-2>:星期五
    //  打印-3>:FRIYDAY
    //  打印-4>:FRIYDAY
    //  打印-5>:开车
}
展开阅读全文

没有更多推荐了,返回首页