Java5 枚举类型使用总结
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 13:59:47
* 说明接口
*/
public interface IDesc {
/**
* 获取说明信息
* @return String
*/
public String getDesc();
}
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 13:43:22
* 实现了接口的枚举类型
*/
public enum SharpShooter_5 implements IDesc {
LOCKED("锁定目标"),
AIM("瞄准目标"),
SHOOT("射击");
private String desc; //枚举说明
/**
* 私有的构造方法
*/
private SharpShooter_5(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:03:26
* 测试实现了接口的枚举类型
*/
public class TestDemo_5 {
public static void main(String args[]) {
for (SharpShooter_5 enumSS : SharpShooter_5.values()) {
System.out.println(enumSS + " " + enumSS.getDesc());
}
}
}
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击
Process finished with exit code 0
4、每个枚举值实现的自己的接口
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:05:48
* 每个枚举值自己实现接口
*/
public enum SharpShooter_6 implements IDesc {
LOCKED(){
public String getDesc() {
return "锁定目标";
}
},
AIM{
public String getDesc() {
return "瞄准目标";
}
},
SHOOT{
public String getDesc() {
return "射击";
}
}
}
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:10:28
* 测试每个枚举值自己实现接口
*/
public class TestDemo_6 {
public static void main(String args[]) {
for (SharpShooter_6 enumSS : SharpShooter_6.values()) {
System.out.println(enumSS + " " + enumSS.getDesc());
}
}
}
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击
Process finished with exit code 0
5、带有抽象方法的枚举类型
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:13:25
* 带有抽象方法的枚举类型
*/
public enum SharpShooter_7 {
LOCKED(){
public String getDesc() {
return "锁定目标";
}
},
AIM{
public String getDesc() {
return "瞄准目标";
}
},
SHOOT{
public String getDesc() {
return "射击";
}
};
/**
* 抽象方法,每个枚举值都必须自己实现
*
* @return String
*/
public abstract String getDesc();
}
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:16:56
* 测试带有抽象方法的枚举类型
*/
public class TestDemo_7 {
public static void main(String args[]) {
for (SharpShooter_7 enumSS : SharpShooter_7.values()) {
System.out.println(enumSS + " " + enumSS.getDesc());
}
}
}
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击
Process finished with exit code 0
六、对Java枚举类型的一些看法
枚举的本质是类,在没有枚举之前,仍然可以按照java最基本的编程手段来解决需要用到枚举的地方。枚举屏蔽了枚举值的类型信息,不像在用public static final定义变量必须指定类型。枚举是用来构建常量数据结构的模板,这个模板可扩展。枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时候,编译器会报错。枚举的更多用法还需要在开发中去研究创造,Java5、Java6增加了不少新的特性,技术在升级,对程序员来说就要学习,如果你热爱java的话。否则别人用到新特性的代码你看不懂,那才叫郁闷。
目前,本人在开发中也很少用到枚举,虽然Java设计得很好,处心积虑为开发人员着想,但是是否有必要增加一个关键字让全世界的java程序员去学习研究?本人感觉Java现在越来越复杂了,新特性对我而言是一大障碍,需要大量的时间去熟悉?对此,我也不敢妄下结论,一是我们和java科学家差距太大,二是怕误导读者,这个就留个各位读者吧!
上一页 [1] [2] [3]

【责编:Ken】