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。并且,枚举常量必须在枚举类的最前方声明。
可以为枚举类中静态对象定义方法:
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统