我是靠谱客的博主 淡淡砖头,最近开发中收集的这篇文章主要介绍java enum(枚举)理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面我在使用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(枚举)理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部