您的位置:首页 > 编程语言 > Java开发

Java 枚举类

2015-10-29 11:16 471 查看
在C语言中枚举是使用int类型的一种特殊类型,可以使用int替代枚举。但是Java并非如此。Java是完全面向对象的语言,枚举也是。

Java的枚举是自动继承 java.lang.Enum类,但是不允许显式继承,它是由编译器自动完成的。声明枚举类不用关键字class,而是用enum。

枚举类型继承了java.lang.Enum类,并且自动声明为final,构造器为私有。同时所有的枚举类对象都是枚举类中所声明的,并且为public,static,final。编译器还会自动为枚举类生成两个public static方法:value与valueOf。因此,我们在枚举类中不能声明这两个方法。

我们可以自己定义一个枚举类的构造方法,但是在此构造器中不能访问枚举类中的任何对象。因为枚举类型在类的内部声明枚举类的对象,也就是每个枚举常量都是一个枚举对象,并且声明为public ,static,final。并且,枚举常量必须在枚举类的最前方声明。

package enumTest;

import java.util.ArrayList;
import java.util.List;

enum Vehicle {

CARS, BUS, MOTOR;
private static List<Vehicle> list = new ArrayList<>();
Vehicle() {
System.out.println("Vehicle构造器:" + this);
//list.add(this);
}
}

public class TestVehicle{
public static void main(String[] args){
Vehicle mVehicle;
mVehicle = Vehicle.BUS;
}
}


可以为枚举类中静态对象定义方法:

package enumTest;

enum EnumAnimal{
CAT{
public void act(){
System.out.println("I am a cat");
}
},

DOG{
public void act(){

}
},

PIG{
public void act(){

}
};

public abstract void act();
}//EnumAnimal

public class TestAnimal {

public static void main(String[] args) {
EnumAnimal mAnimal = EnumAnimal.CAT;
mAnimal.act();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java