class Time { private Season season = Season.Spring; public Season getSeason() { return season; } public static void main(String[] args) { Time t = new Time(); System.out.println(t.getSeason()); } }enum Season { Spring, Summer, Autumn, Winter }
public int getValue(){ return this.value; } }public class TestSexEnum { /* * @param args */ public static void main(String[] args) { System.out.println(SexEnum.male.getValue()); for (SexEnum item:SexEnum.values()){ System.out.println(item.toString()+item.getValue()); } }} 这是class:与类相同,不同的地方就是写法不一样(enum比较简单,但是写法比较陌生) 同样可以添加方法,属性 enum不能继承类(包括继承enum),只能实现接口,类无此限制(除非用final来限制)。在这个方面,enum更像interface enum只支持public和[default] 访问修饰,class支持比较丰富 可以与下面的类比较一下,定义比较相似 Public class Sex{ Public static final Sex male = new Sex(1); Public static final Sex female = new Sex(0); Private Sex(int value){ This.value = value; }Public int getValue(){ Return this.value; } }=调用比较相似 SexEnum.male.getValue() Sex.male.getValue()总结:其实完全能够用class替代enum,个人认为enum是早期面向过程中,简单数值枚举集合的一种表示,在java中对enum进行了扩展,让它只具有类的部分能力,导致结构不清晰,在java中进入enum有画蛇添足的感觉.更为重要的是,我们在进行设计的时候引入enum非常容易偏离OO思想,进入以数据或者过程为中心的路子 大家认为现在java里还有用enum的必要没有?
好处就是节约内存
class Time { private Season season = Season.Spring; public Season getSeason() {
return season;
} public static void main(String[] args) {
Time t = new Time();
System.out.println(t.getSeason());
}
}enum Season { Spring, Summer, Autumn, Winter
}
male(1),female(0);
private final int value;
private SexEnum(int value){
this.value = value;
}
public int getValue(){
return this.value;
}
}public class TestSexEnum {
/*
* @param args
*/
public static void main(String[] args) {
System.out.println(SexEnum.male.getValue());
for (SexEnum item:SexEnum.values()){
System.out.println(item.toString()+item.getValue());
} }}
这是class:与类相同,不同的地方就是写法不一样(enum比较简单,但是写法比较陌生)
同样可以添加方法,属性
enum不能继承类(包括继承enum),只能实现接口,类无此限制(除非用final来限制)。在这个方面,enum更像interface
enum只支持public和[default] 访问修饰,class支持比较丰富
可以与下面的类比较一下,定义比较相似
Public class Sex{
Public static final Sex male = new Sex(1);
Public static final Sex female = new Sex(0); Private Sex(int value){
This.value = value;
}Public int getValue(){
Return this.value;
}
}=调用比较相似
SexEnum.male.getValue()
Sex.male.getValue()总结:其实完全能够用class替代enum,个人认为enum是早期面向过程中,简单数值枚举集合的一种表示,在java中对enum进行了扩展,让它只具有类的部分能力,导致结构不清晰,在java中进入enum有画蛇添足的感觉.更为重要的是,我们在进行设计的时候引入enum非常容易偏离OO思想,进入以数据或者过程为中心的路子 大家认为现在java里还有用enum的必要没有?
比如类型安全,使用方便等优点.
感觉enum没有必要有那么多特性吧.
再说enum编译之后就是个普通的类,如果要使用class来实现,自己写也可以,就是麻烦点.
设计的非常非常的诡异
其实他的ENUM就是一个类,一个静态类而已
老实说。。JAVA的ENUM非常的难用,和C相比,这东西基本没什么大的用处还是用老办法,直接定义FINAL STATIC变量的办法来声明枚举吧,方便实用
比直接使用final static的好处就是有类型检查
我一般用的时候也只是和常量一样,只声明枚举名,他的赋值语法。。好怪异。。
一般在用到需要赋值的枚举时,都是做一个单独的类,里面放常量简单。易懂。
很好理解^_^试着用几下就知道。
感觉还是java里直接用静态常量来代替enum比较好。