java enum(枚举)理解

本文深入探讨Java枚举的使用方法,包括定义、遍历、switch操作及自定义属性方法等。解析枚举对象的常用方法,并通过实例演示如何增强枚举的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面我在使用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是单一继承)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值