java.lang.Enum枚举类型

前言

  
  上一篇文章介绍的是常用类中的String,这一篇总结一下有关枚举类都有哪些有意思的知识

枚举类型

enum的全称为enumeration,是JDK1.5才引入的特性,存放在java.lang包中。

一、使用情况

  当一个类型他是有一些可并列的,不变化的元素组成时,这些元素就像是导游,指引程序走向不同的地方,用枚举是比较好的选择
  简单的举个例子:男人、女人;星期一到星期日;春夏秋冬等等这样的元素都可以用枚举类来实现

当然我们也不可以通过别的方法来实现,就好比如果我定义了一些常量,也同样可以达到效果,但是很多个变量是零散的独立的,没有范畴和管理的概念,但是枚举就很好的完善了这一点,在这一个范围内所需要的东西就都放到一个枚举类中,方便对整体的控制。

在查资料的时候,看到了这么一句话:枚举提供了一种类型管理的组件,让面向对象的体系更加完善,使得一些类型的管理既可配置化,并可以管理。觉得总结的很精辟

2.DEMO

下边这个例子包含了枚举的声明和一些常用的方法

public class EnumTest {
//    public enum Color{
//        RED,BLUE,BLACK,YELLOW,GREEN
//    }

    enum Color{
        RED(255,0,0),BLUE(0,0,255),YELLOW(255,255,0),GREEN(0,255,0);
        private Color(int rv,int gv,int bv){
            this.redValue=rv;
            this.greenValue=gv;
            this.blueValue=bv;    
        }

        public String toString(){
            return super.toString()+"("+redValue+","+greenValue+","+blueValue+")";
        }

        private int redValue;
        private int greenValue;
        private int blueValue;

    }

    public static void main(String orgs[])
    {
        Color color=Color.RED;
        System.out.println(color);//调用了toString()方法

        System.out.println(Color.RED.ordinal());//在枚举类中的顺序
        System.out.println(Color.RED.compareTo(Color.BLUE));//返回顺序差

        Color[] colors=Color.values();//静态方法,返回一个包含全部枚举值的数组
        for(Color c:colors){
            System.out.println(c);
        }

        switch(color){
            case RED:System.out.println("its red");break;
            case BLUE:System.out.println("its blue");break;
            case GREEN:System.out.println("its green");break;
        }


    }

3.知识要点

  1. enum很像特殊的类,实际上enum声明定义的类型就是一个类

  2. Color枚举类就是class,而且是一个不可以被继承的final类,其枚举值都是静态常量,可以通过 Color c=Color.RED获得实例

  3. 枚举类的构造器只是在构造枚举值的的时候被调用

  4. 构造器只能是private。这样可以保证外部代码无法新构造枚举类的实例。Color color=new Color(100,200,300);这样是错误的,有点像单例模式

总结

其实在项目中还没有用过,先作为了解,以后用的时候在好好研究一下~

你可能感兴趣的:(-----,【J2SE】)