您的位置:首页 > 编程语言 > Java开发

Java| enum枚举(1)

2017-06-22 23:52 302 查看

定义枚举

package cn.com.yves.enumeration.api1;

/**
* 所有自定义的枚举都继承抽象类:java.lang.Enum
*
* 注意:所有自定义枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
*
* @author Yves He
*
*/
public enum Car {

/**
* 定义枚举的实例:
*
* 每个实例的修饰权限是:public static final (类似下方定义的常量MESSAGE),
*
* 注意:也正是因为默认修饰权限是public static final所以不管何时获取到的枚举的实例都是同一个对象,可以理解成单例.
*
* Car.BAOMA == Car.valueOf("BAOMA") 返回true
*
* 书写建议:实例都是大写
*/
BENCI, BAOMA, LANBOJINI;

public static final String MESSAGE = "YVES";

}


测试代码

package cn.com.yves.enumeration.api1;

public class Test {

@SuppressWarnings("unused")
public static void main(String[] args) {

/**
* 1.获取枚举的-实例:
*
* 获取单个实例 ,获取所有实例
*
* 获取了枚举的实例就可以调用父类Enum中的方法
*/
Car[] instances = Car.values();// 获取所有实例
Car instance1 = Car.BAOMA;// 获取单个实例
Car instance2 = Car.valueOf(Car.class, "BAOMA");
Car instance3 = Car.valueOf("BAOMA");// 根据 枚举实例的名称获取枚举实例(区分大小写)
//Car instance = Car.valueOf("baoma");//这里名称填写的是不存在的枚举的名称,运行会抛出异常IllegalArgumentException:  "No enum const " + enumType +"." + name

/**
* 2.调用父类Enum中的-静态方法
*
* 具体解释可以看获取枚举实例部分.
*
*/
Car[] values = Car.values();
Car car = Car.valueOf("BAOMA");
Car valueOf = Car.valueOf(Car.class, "BAOMA");//参数:Class<Car> enumType, String name

/**
* 3.调用父类Enum中的-实例方法(Enum中已经重写的方法:比如 compareTo,toString,equals...)
*/
Car ins = Car.BAOMA;
boolean equ = ins.equals(Car.BAOMA);// true
String name = ins.toString();// 放回name 也就是定义实例的名称,比如BAOMA
int result = Car.BAOMA.compareTo(Car.BENCI);// 比较此枚举与指定对象的顺序,也就是枚举的声明的顺序  >0 代表benci在baoma后面.
System.out.println(Car.BAOMA == instance3);//true

/**
* 4.调用父类Enum中特有的方法: name, ordinal
*
*
*/
Car ins2 = Car.BAOMA;
String name2 = ins2.name();// 获取枚举实例 声明的名称,如BAOMA
int ordina2 = ins2.ordinal();// 获取枚举实例 声明的位置,从0开始计算

System.out.println();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: