模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)"/>
JAVASE基础模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)
JAVASE基础知识模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)
枚举
- JDK1.5的新特性: 自动拆装箱 泛型 增强for 可变参数 枚举
- 概述:就是一个类只能存在几个固定的对象 那么这个就是枚举 我们就可以使用这些对象表示一些固定的值
案例
枚举类的自己实现
- 枚举方向属性并赋值
package MeiJu.X1;public class Mei {public static void main(String[] args) {FangXiang front=FangXiang.FRONT;FangXiang behind=FangXiang.BEHIND;FangXiang left=FangXiang.LEFT;FangXiang right=FangXiang.RIGHT;System.out.println(front.name);System.out.println(behind.name);System.out.println(left.name);System.out.println(right.name);}
}
class FangXiang {public static final FangXiang FRONT=new FangXiang("前");public static final FangXiang BEHIND=new FangXiang("后");public static final FangXiang LEFT=new FangXiang("左");public static final FangXiang RIGHT=new FangXiang("右");String name;private FangXiang(String name) {this.name = name;}
}
运行结果:
前
后
左
右
- 抽象枚举方向属性并赋值
package MeiJu.X1;public class Mei {public static void main(String[] args) {FangXiang front=FangXiang.FRONT;FangXiang behind=FangXiang.BEHIND;FangXiang left=FangXiang.LEFT;FangXiang right=FangXiang.RIGHT;System.out.println(front.name);System.out.println(behind.name);System.out.println(left.name);System.out.println(right.name);}
}
class FangXiang {public static final FangXiang FRONT=new FangXiang("前");public static final FangXiang BEHIND=new FangXiang("后");public static final FangXiang LEFT=new FangXiang("左");public static final FangXiang RIGHT=new FangXiang("右");String name;private FangXiang(String name) {this.name = name;}
}
运行结果:
前
后
左
右
enum关键字
- 定义枚举类要用关键字enum
- 特点与注意事项
- 所有枚举类都是Enum的子类,但是不要显式的写出来
- 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
- 枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”)
- 枚举类也可以有抽象方法,但是枚举项必须重写该方法
- 枚举在switch语句中的使用
- 方法
int ordinal() 返回枚举项的序号
int compareTo(E o) 比较两个枚举项的 返回的是两个枚举项序号的 差值
String name() 获取枚举项的名称
String toString()获取枚举项的名称
<T> T valueOf(Class<T> type,String name) 用来获取指定的枚举项 参数1:枚举类对应的字节码对象 参数2 枚举项的名称
values() 获取所有的枚举
- 案例一 普通枚举
package MeiJu.X1;public class MeiJu {public static void main(String[] args) {Meij front = Meij.FRONT;Meij behind = Meij.BEHIND;Meij left = Meij.LEFT;Meij right = Meij.RIGHT;System.out.println(front);System.out.println(behind);System.out.println(left);System.out.println(right);}
}
enum Meij {FRONT, BEHIND, LEFT, RIGHT;
}
运行结果:
FRONT
BEHIND
LEFT
RIGHT
- 案例二 枚举赋值
package MeiJu.X1;public class MeiJu1 {public static void main(String[] args) {Meij1 front = Meij1.FRONT;Meij1 behind = Meij1.BEHIND;Meij1 left = Meij1.LEFT;Meij1 right = Meij1.RIGHT;System.out.println(front.name);System.out.println(behind.name);System.out.println(left.name);System.out.println(right.name);}
}
enum Meij1 {FRONT("前"),BEHIND("后"),LEFT("左"),RIGHT("右");String name;private Meij1(String name){this.name = name;}}
运行结果:
前
后
左
右
- 案例三 抽象枚举
package MeiJu.X1;enum Meij2 {FRONT("前") {@Overridepublic void show(String name) {}},BEHIND("后") {@Overridepublic void show(String name) {}},LEFT("左") {@Overridepublic void show(String name) {}}, RIGHT("右") {@Overridepublic void show(String name) {}};String name;private Meij2(String name) {this.name = name;}public abstract void show(String name);
}public class MeiJu2 {public static void main(String[] args) {Meij2 front = Meij2.FRONT;Meij2 behind = Meij2.BEHIND;Meij2 left = Meij2.LEFT;Meij2 right = Meij2.RIGHT;System.out.println(front.name);System.out.println(behind.name);System.out.println(left.name);System.out.println(right.name);}}
运行结果:
前
后
左
右
待续…
更多推荐
JAVASE基础模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)
发布评论