文章目录 Java枚举类(enum)重点用法和内部方法,附代码一、Java 枚举类(enum) 详解5种常见的用法1.常量2.支持switch3.向枚举中添加新方法4.覆盖枚举的方法5.实现接口(下面代码有测试)二、 注意点:三、内部常用方法:1.toString():2.values():3.valuesOf(String str):四、枚举类(enum)测试代码:
Java枚举类(enum)重点用法和内部方法,附代码 一、Java 枚举类(enum) 详解5种常见的用法 1.常量
类中的对象的个数是有限的,而且很容易就确实,比如星期天、季节、支付状态、付款方式…
在JDK1.5 之前,我们定义常量都是:修饰 public static final…
现在:public enum Color {
RED, GREEN, BLANK, YELLOW
} //枚举实例的写法都是大写,单词之间都用下划线进行分割
JDK1.8之后的switch语句支持byte,short,int,char,数组,enum类型,使用枚举,能让我们的代码可读性更强。
switch(枚举类名){
case 枚举对象名:
break;
…
}
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个"分号"。而且 Java 要求必须先定义 enum 实例。
4.覆盖枚举的方法如:toString()方法覆盖,因此拿到枚举对象,直接打印输入此对象的信息而不是一个地址。
5.实现接口(下面代码有测试)1)有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
2)枚举只能实现某一个接口。所以就得去重写接口中的方法。重写方法可以是针对于整个枚举类去重写,方法实现功能;
也可以对其中每一个枚举对象都去重写接口方法以实现给自的功能和需求,具体操作如:
1.枚举类是一般的类名都是xxxEnum,枚举实例的写法都是大写,单词之间都用下划线进行分割,
枚举实例之间用逗号进行隔开,加入枚举类中要写其他方法,最后一个枚举实例后一定要加分号;
2.通过类名可以直接调用枚举实例。当多次调用同一个实例时,其实都是在调用同一个实例,也就是说两个的地址是同一个
Java枚举类比较是可以直接使用==或者equals的,原因是枚举类是继承于java.lang.Enum类
而这个类是重写了equals方法的,方法里就是直接是,return this == other(比较对象,传入的参数)
Enum类中重写了equals方法源码:
返回当前枚举类对象常量的名称。拿到枚举对象,直接打印输入此对象的信息而不是一个地址
2.values():返回枚举类型的对象数组,该方法可以方便的遍历所有的枚举名称
3.valuesOf(String str):可以把一个字符串转为对应的枚举对象。,返回对象信息。
四、枚举类(enum)测试代码: package com.cheng.Enum;import java.util.Arrays;public class EnumTest1 { public static void main(String[] args) { /*常用方法 1.toString():返回当前枚举类对象常量的名称。拿到枚举对象,直接打印输入此对象的信息而不是一个地址 2.values(): 返回枚举类型的对象数组,该方法可以方便的遍历所有的枚举名称 3.valuesOf(String str):可以把一个字符串转为对应的枚举对象 */ //打印所有枚举对象信息 testEnum[] values = testEnum.values(); System.out.println("values= " + Arrays.toString(values)); //返回枚举中对象名为SPRING的对象 testEnum spring1 = testEnum.valueOf("SPRING"); System.out.println(spring1); testEnum spring2 = testEnum.SPRING; System.out.println(spring2); //调用equals和==,对于枚举类来说是一样的 System.out.println(spring1.equals(spring2));//true }}interface Info {//接口声明 void show();}enum testEnum implements Info { SPRING("春天", 1) { @Override public void show() { System.out.println("11"); } }, SUMMER("夏天", 2) { @Override public void show() { System.out.println("11"); } }, AUTUMN("秋天", 3) { @Override public void show() { System.out.println("11"); } }, WINTER("冬天", 4) { @Override public void show() { System.out.println("11"); } }; private final String name; private final int num; testEnum(String name, int num) { this.name = name; this.num = num; } public String getName() { return name; } public int getNum() { return num; } @Override public String toString() { //也可以不写,会调用Enum中的toString return "testEnum{" + "name=" + name + ", num=" + num + '}'; }}测试结果:
values= [testEnum{name=春天, num=1}, testEnum{name=夏天, num=2}, testEnum{name=秋天, num=3}, testEnum{name=冬天, num=4}]testEnum{name=春天, num=1}testEnum{name=春天, num=1}true