Java SE新特性之枚举(JDK 1.5)
程序员文章站
2022-06-04 23:11:56
...
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;
}
}
}