首页 >> 编程狮 >> 后端

java枚举(Enum)

  • 后端
  • 2025-07-22
  • 点击次数:

1、什么是枚举?

java枚举是一个特殊的类,一般表示一组常量,,比如一年的4个季节,一年的12个月份,

一个星期的7天,方向有东南西北等。

java枚举类使用enum关键字来定义,各个常量使用逗号来分割,。枚举类和正常类一样,

也可以有成员变量、实例方法、静态方法、抽象方法。

例如定义一个颜色的枚举类

enum  Color{

    RED,GREEN,BLUE;

}

public class test{

    public static void main(String[] args){

        Color c1= Color.RED;

        System.out.println(c1);//RED

    }

}

2、enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Serializable和

java.lang.Comparable两个接口。

values()、ordinal()和valueOf()方法位于java.lang.Enum类中:

values()返回枚举类中所有的值

ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样

valueOf()方法返回指定的字符串值的枚举常量。

2.1 枚举类常量

首先枚举类是一个特殊的class,这个class相当于final  static 修饰,不能被继承,

它的构造方法强制被私有化,下面有一个默认的构造方法private  ColorEnum();

所有的枚举类都继承自java.lang.Enum类。由于java不支持多继承,所以枚举对象

不能再继续继承其他类。

public  enum  ColorEnum{

    //每个枚举变量都是枚举类ColorEnum的实例,相当于RED= new ColorEnum(1);

    //按序号来,每个成员变量都是final static 修饰

    RED,GREEN,BLANK,YELLOW;

}


@Test

public void ColorTest(){

    //ordinal返回枚举变量的序号

    //values返回枚举类中所有值

    for(ColoeEnum color:ColorEnum.values()){

    System.out.println(color+",ordinal:"+color.ordinal()+",name:"+color.name());

}

}

2.2 带一个参数的枚举

public  enum TypeEnum{

    FIREWALL("firewall"),

    SECRET("secretMac"),

    BALANCE("fs");

    private String typeName;

    TypeEnum(String typeName){

        this.typeName=typeName;

    }

    public String getTypeName(){

        return this.typeName;

    }

    //根据类型的名称,返回类型的枚举实例

    public static TypeEnum fromTypeName(String typeName){

        for(TypeEnum type:TypeEnum .values()){

            if(type.getTypeName().equals(typeName)){

                return type;

            }

        }

        return  null;

    }

}

@Test

public void TypeTest(){

    String  typeName= "fs";

    TypeEnum type = TypeEnum .fromTypeName(typeName);

//type是TypeEnum 类实例化对象   typeName是实例化对象type的值

//name:实例化对象的名称(String)

    System.out.println(type+",typeName:"+type.getTypeName()+",ordinal:"+type.ordinal()

+",name:"+type.name);

}

标签:

上一篇
没有了

下一篇
java collection详解