java 枚举
************************
相关类与接口
Enum
public abstract class Enum<E extends Enum<E>>
implements Constable, Comparable<E>, Serializable {
private final String name; //枚举字面量
private final int ordinal; //枚举顺序
public final String name() { //返回枚举字面量
public final int ordinal() { //返回枚举顺序
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) {
//根据枚举字面量返回枚举对象
public final int compareTo(E o) {
public final Class<E> getDeclaringClass() {
public final Optional<EnumDesc<E>> describeConstable() {
public String toString() {
public final int hashCode() {
public final boolean equals(Object other) {
protected final Object clone() throws CloneNotSupportedException {
private void readObject(ObjectInputStream in) throws IOException,
private void readObjectNoData() throws ObjectStreamException {
**********
内部类:Enum.EnumDesc
public static final class EnumDesc<E extends Enum<E>>
extends DynamicConstantDesc<E> {
private EnumDesc(ClassDesc constantType, String constantName) {
public static<E extends Enum<E>> EnumDesc<E> of(ClassDesc enumClass, String constantName) {
public E resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException {
public String toString() {
************************
示例
enum Color{
Red("红色"),Blue("蓝色"),Purple("紫色");
private String name;
Color(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Color getByOrdinal(int ordinal){
switch (ordinal){
case 0: return Red;
case 1: return Blue;
default: return Purple;
}
}
@Override
public String toString() {
return "Color{" +
"name='" + name + '\'' +
'}';
}
}
public class Test7 {
public static void main(String[] args){
for (Color color:Color.values()){
System.out.println(color.ordinal()+" "+color.name()+" "+color.getName());
}
Color color=Color.valueOf("Blue");
System.out.println(color);
Color color2=Color.getByOrdinal(1);
System.out.println(color2.ordinal()+" "+color2);
}
}
***************
控制台输出
0 Red 红色
1 Blue 蓝色
2 Purple 紫色
Color{name='蓝色'}
1 Color{name='蓝色'}