Java SE新特性之枚举(JDK 1.5)

JDK 1.5 新特性—枚举

1、枚举是一种高级的多例设计模式

enum Color{
    RED,GREEN,BLUE
}

public class Test {
    public static void main(String[] args) {
        System.out.println(Color.GREEN);
    }
}

2、Enum类
JDK1.5提供了enum关键字,enum不是一种新的结构,它是对一种类型的包装;使用enum关键字定义的枚举类相当于一个Class类,继承了java.lang.Enum

Enum类的常用方法:

构造方法:protected Enum(String name, int ordinal)
取得枚举名字:public final String name()
取得枚举序号:public final int ordinal()

public static void main(String[] args) {
        System.out.println(Color.GREEN.name()+"  "+Color.BLUE.ordinal());
    }

取得所有枚举数据:values()返回一个枚举的对象数组

enum Color{
	RED,GREEN,BLUE
}

public class Test {
    public static void main(String[] args) {
        for(Color temp : Color.values()){
            System.out.println(temp.ordinal() +"号颜色是:"+ temp.name());
        }
    }
}

注意:Enum与enum的区别?
enum是一个关键字;Enum是一个抽象类,使用enum定义的枚举类本质上相当于一个类继承了Enum抽象类

在枚举中定义更多的结构:

enum Color{
    RED("红色"),GREEN("绿色"),BLUE("蓝色");//枚举类中定义多个对象,枚举对象写在第一行
    private String title;
    private Color(String title){//构造方法私有化
        this.title = title;
    }
    @Override
    public String toString(){//覆写toString方法
        return this.title;
    }
}

public class Test {
    public static void main(String[] args) {
        System.out.println(Color.RED);
    }
}

枚举实现接口:

interface IColor{
    public String getColor();
}

enum Color implements IColor{
    RED("红色"),GREEN("绿色"),BLUE("蓝色");
    private String title;
    private Color(String title){//构造方法私有化
        this.title = title;
    }
    @Override
    public String toString(){//覆写toString方法
        return this.title;
    }

    @Override
    public String getColor() {//覆写接口的getColor方法
        return this.title;
    }
}

public class Test {
    public static void main(String[] args) {
        IColor iColor = Color.GREEN;
        System.out.println(iColor.getColor());
    }
}

枚举的应用:只能使用指定的对象

enum Sex{
    MALE("男"),FEMALE("女");
    private String title;
    private Sex(String title){
        this.title = title;
    }
    @Override
    public String toString(){
        return this.title;
    }
}
class Person{
    private String name;
    private int age;
    private Sex sex;

    public Person(String name, int age, Sex sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("张三",18,Sex.MALE);
        System.out.println(per);
    }
}

枚举支持switch判断:

enum Sex{
    MALE,FEMALE
}
public class Test{
    public static void main(String[] args) {
        switch (Sex.MALE){
            case MALE:
                System.out.println("男性");
                break;
            case FEMALE:
                System.out.println("女性");
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/ly52014/article/details/88351965