Java Enum 枚举详解
来源:互联网 发布:linux进入grub界面 编辑:程序博客网 时间:2024/06/06 21:43
在某些情况下,一个类的对象是有限而固定的。比如季节类,它只有4个属性。像这种实例有限且固定的类,被称为枚举类。没错,它仍然是一个类,具有类所有的特性。
下面就开始创建一个枚举类吧:
**
- 无法创建枚举文件的问题
**
new>Enum
哎呀,结果发现创建的时候无法创建(如果你用的是eclipse),如下图:
这是因为Eclipse可以指定编译深度,默认值为1.4,而枚举是在jdk1.5之后出现的。需要去修改:Project>proterties>Java Compiler。然后去修改,如图:
然后应用ok。
接下来创建一个Colo枚举类,有三个实例对象
public enum Color { RED,GREEN,BLUE;}
在枚举类中有三个实体类对象。
1.而且它们只能被写在第一行,否则这些实体对象无效。
2.枚举类继承的是Enum类,不可以显示去继承其它类,而Enum类实现了Serializable和Comparable接口
3.如果枚举类是非抽象的,那么它不能被继承
- switch语句同样提供了对枚举类的支持:
public class Test { public static void main(String[] args) { //调用test方法并传递BLUE对象 test(Color.BLUE); } /** * * @param c 枚举类对象 */ public static void test(Color c) { switch (c) { case RED: System.out.println("红"); break; case BLUE: System.out.println("蓝"); break; case GREEN: System.out.println("绿"); break; default: break; } }}
可以看出,在switch语句中,可以直接写对象名称,不用通过类名点出。
**
- 枚举类也是类
**
枚举类也是一种类,里面同样可以有成员变量、方法、构造方法。
- 枚举类中成员变量:
public enum Color { RED,GREEN,BLUE; public String name;}
使用:
public class Test { public static void main(String[] args) { Color.BLUE.name="蓝色"; System.out.println(Color.BLUE.name); }}
输出:蓝色
和普通类对象的用法没有区别。
- 成员方法:
public enum Color { //三个实体类对象 RED,GREEN,BLUE; //成员变量 public String name; /** * 成员方法 * @param str */ public void eat(String str){ System.out.println(str); }}
调用:
public class Test { public static void main(String[] args) { Color.BLUE.eat("不能吃"); }}
- 构造方法
public enum Color { //三个实体类对象,此处的枚举值,必须调用构造方法来创建(因为只有一个构造方法) RED("红色"),GREEN("绿色"),BLUE("蓝色"); //成员变量 public String name; //有参构造方法 private Color(String name) { this.name = name; } /** * 成员方法 * @param str */ public void eat(String str){ System.out.println(str); }}
和普通类一样,写了什么构造方法,就只能用哪个构造方法。
- 枚举类实现接口
public enum Color implements Runnable{ //三个实体类对象,此处的枚举值,必须调用构造方法来创建(因为只有一个构造方法) RED,GREEN,BLUE;//重写接口的方法 @Override public void run() { }}
可以看到,和普通类的继承没什么区别,但是每个对象所执行的重写的方法都是一样的,做的事情也就是一样的。很多情况下,我们的需求是不同的对象,处理不同的数据,那就要分别去重写这些方法。
public enum Color implements Runnable{ //这是一个通过匿名内部类得到的对象 RED{ @Override public void run() { System.out.println("红光"); } } ,GREEN{ @Override public void run() { System.out.println("绿光"); } } ,BLUE{ @Override public void run() { System.out.println("蓝光"); } };}
这个时候的枚举类Color并没有重写接口的抽象方法,那么Color就是一个抽象的枚举类,可以通过子类对象获得具体实例。
调用:
public class Test { public static void main(String[] args) { Color.BLUE.run(); }}
输出:蓝光
专门用来保存枚举实体类对象的集合有EnumSet和EnumMap。
总之,枚举也是类。就好像正方形也是矩形一样。
- Java Enum 枚举详解
- java枚举(enum)详解
- JAVA枚举ENUM用法详解
- Java Enum 枚举用法详解
- Java enum 枚举类详解
- Java枚举类enum详解
- java枚举类型enum详解
- Java 枚举enum 使用详解
- Java enum(枚举)使用详解
- JAVA Enum枚举类详解
- java enum(枚举)使用详解
- Java 枚举enum 使用详解
- Java 枚举enum 使用详解
- java enum(枚举)使用详解
- Java enum(枚举) 详解
- Java enum(枚举)使用方法详解
- Java枚举类型enum使用详解 .
- java enum(枚举)使用详解 + 总结
- 跨域
- HTML元素居中的几种办法
- SpringMVC重要注解(一)@ExceptionHandler和@ResponseStatus
- 存储器的几种体系结构
- 我也说说Emacs吧(7)
- Java Enum 枚举详解
- mysql 时间方法总结
- php 原生分页类
- JS之颠倒数组元素的reverse方法
- 1064. 朋友数(20) PAT
- 欢迎使用CSDN-markdown编辑器
- IDEA如何将master合并到指定支代码
- 使用微信PC端的截图dll库实现微信截图功能
- 把JfreeChart集成在Hibernate+SpringMVC框架项目中(附源码)