概述
下面我在使用enum过程中一些经验和总结,主要包括如下内容:
1.原始的接口定义变量
2.语法(定义)
3.遍历 ,swich等常用操作
4.enum对象的常用方法介绍
5.给enum自定义属性和方法
6.enum的原理分析
7.总结
原始的接口定义变量
public interface IConstants{
String MON=“mon”;
String TUE="Tue";
String WED="Wed";
}
语法定义
创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类)。枚举类型符合通用模式(class Enum<E extends Enum<E>>),而E表示枚举类型的名称。
public enum EnumTest{
MON,TUE,WED;
}
这段代码其实调用了3次Enum(String name,String ordinal)
new Enum<EnumTest>("MON",0);
new Enum<EnumTest>("TUE",1);
new Enum<EnumTest>("WED",2);
遍历,swich常用操作
对enum进行遍历和swich的操作示例
package com.ichezheng.insurance.controller; import com.ichezheng.insurance.util.CtrUtils; import com.ichezheng.insurance.util.JSONFormatUtil; import com.ichezheng.insurance.util.WeiXinUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import java.util.Map; /** * @Author wangkun * @Date 2016/8/30 10:09 */ //定义枚举 enum tool { RED("红色", 1); private tool(String color,int num){ this.color=color; this.num=num; } private String color; private int num; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } } public class ToolController { public static void main(String[] args) { for (tool t:tool.values()){ switch (t.getNum()){ case 1: System.out.println("输出红色"); break; case 2: System.out.println("输出绿色"); break; case 3: System.out.println("输出白色"); break; default: System.out.println("输出黄色"); } } } }结果是:
输出红色
enum对象常用方法介绍
int compareTo(E o)
比较此枚举与指定对象的顺序
class<E> getDeclaringClass()
返回与此枚举常量的枚举类型相对应的class对象
string name()
返回此枚举常量名称,在其枚举声明中对其进行声明
int ordinal()
返回枚举常量顺序
enum自定义属性和方法
public class Test { public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String name; private int index; // 构造方法 private Color(String name, int index) { this.name = name; this.index = index; } // 覆盖方法 @Override public String toString() { return this.index + "_" + this.name; } } public static void main(String[] args) { System.out.println(Color.RED.toString()); } }
输出结果是 1_红色
原理分析
enum的语法结构尽管和class的语法不一样,但是经过编译器之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类。该类继承了java.lang.Enum<E> 。EnumTest经过反编译之后可以得到以下内容
public class com.ichezheng.insurance.controller.EnumTest extends java.lang.Enum{
public static final com.ichezheng.insurance.controller MON;
public static final com.ichezheng.insurance.controller TUE;
public static final com.ichezheng.insurance.controller WED;
}
所以,实际上enum就是一个class,只不过java编译器帮我们帮我们做了语法解析与编译而已
总结
可以把enum看成是一个普通的class,它们都可以定义一些属性和方法,不同之处是:enum不能使用extends 关键字继承其它类,因为enum已经继承了java.lang.enum(java是单一继承)
最后
以上就是淡淡砖头为你收集整理的java enum(枚举)理解的全部内容,希望文章能够帮你解决java enum(枚举)理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复