Java enum 枚举还可以这么用
来源:互联网 发布:汉仪综艺体简 mac版 编辑:程序博客网 时间:2024/04/29 05:25
在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外。然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看。
1、可以在enum中添加变量和方法
先来看一段代码示例:
public enum State { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); // 成员变量 private String name; private int index; // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化 private State(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (State c : State .values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } }
从上面的代码中我们可以看到,定义完枚举值,然后在其后面加上分号,接着就可以定义其他的变量、方法了。另外需要特别说明的是,enum中的构造方法不可以用public标识,这样做是为了防止用户实例化enum。
2、可以用来定义常量
先来回顾一下Java中如何定义常量吧,看下面一段代码:
public static final int normalState = 1;private static final int updateState = 2;
下面我们还可以用enum枚举来代替上面的常量定义,代码如下:
public enum State { Normal, Update, Deleted, Fired}
在Java中用enum来定义常量在语法上没有什么优势,但是enum枚举类型可以提供更多的操作功能。
3、在enum中实现接口
先来看下面一段代码:
public interface ICanReadState { void read(); String getState();} public enum State implements ICanReadState { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); private String name; private int index; private State(String name, int index) { this.name = name; this.index = index; } // 接口方法1 @Override public String getState() { return this.name; } // 接口方法2 @Override public void read() { System.out.println(this.index + ":" + this.name); } }
和一般的类中使用接口一样,enum枚举中同样可以继承接口,并实现接口中的所有方法,这样做的好处在于可以更方便地对枚举中的值进行排序、比较等操作,封装性更好。
总结
说白了,enum枚举类型是一个不可以被继承的final类,就以上面的State枚举为例,如果你查看enum类型的字节码,其实是State类型的类静态常量。
5 0
- Java enum 枚举还可以这么用
- Java enum 枚举还可以这么用
- Java enum 枚举还可以这么用
- Java enum 枚举还可以这么用
- Java enum 枚举还可以这么用
- Java enum 枚举还可以这么用
- Java中的enum详细解析------Java enum 枚举还可以这么用
- SQL:Join 原来还可以这么用
- php str_replace还可以这么用。。。厉害
- C#中enum和struct可以这么用
- 客户端还可以这么玩?
- openZoosUrl还可以这么玩
- mysql还可以这么玩
- [Java 14 枚举] Enum, enum
- java中continue还能这么用!
- enum可以没有枚举名
- enum可以没有枚举名
- javascript的Function竟然还可以这么用
- ORACLE建立表空间、用户、授权、查询
- Java内部类的全限定名规律
- QT 断点续传问题
- Git使用方法
- android sdk --- Notification用法实例
- Java enum 枚举还可以这么用
- 培训
- Git Stash用法
- 转自百度百科僵尸进程
- Makefile中常用的函数
- cocos2dx 字符串管理
- 求s=a+aa+aaa+aaaa+aa...a的值
- POJ-1659-Frogs' Neighborhood (Havel-Hakimi定理)
- c++ 堆与堆排序