网络推荐

推荐给好友 上一篇 | 下一篇

JAVA入门:不建议初学者使用Java Enum


声明
  • 声明: 1、任何网站转载本站点内容时需注明来自JAVA-CN.COM,否则我们有权将根据《互联网著作权行政保护办法》追究其相应法律责任; 2、JAVA中文站社区刊登此文只为传递信息,并不表示赞同或者反对.
1、    目的JAVA中文站社区门户 [^*IJ*D*u!o{6t7N
简单认为:满足一些需求
D3H/u3e:A2、    定义、使用
e|"`-Z ?`9|sZ(iApublic enum SexEnum {
T g(f8Fd/`*x(iC    male(1),female(0);
~|.z vGG    
d |[.{4F    private final int value;JAVA中文站社区门户M:t4msB2X [j&A.dg
    JAVA中文站社区门户5Q6J&Vxn
    private SexEnum(int value){JAVA中文站社区门户(q l V,C#][
        this.value = value;JAVA中文站社区门户j9NDU2eh(O`
    }JAVA中文站社区门户+Y @_,i2_ }n |
    JAVA中文站社区门户&o%f2B:|8]VgT
    public int getValue(){
+Y$eAaJ T/Q6B Z)a$J        return this.value;
i(_gk AOOM    }
`/?H/R v0@6f}JAVA中文站社区门户-qr+\7Z QP.e
JAVA中文站社区门户!Toq gw
public class TestSexEnum {JAVA中文站社区门户,L+n}_w z
    /*JAVA中文站社区门户VX+gvav
     * @param args
l0Cyo+H\,? V     */JAVA中文站社区门户| b}9I2fP2R/?y
    public static void main(String[] args) {
4aAgWA VT2d"Q L        System.out.println(SexEnum.male.getValue());JAVA中文站社区门户~#B&P` QRrF
        for (SexEnum item:SexEnum.values()){
[)v}H)JM"fx            System.out.println(item.toString()+item.getValue());
m.{s g5@9L'e        }
v]0b"Br~)\
5GJ m:S:H?0fu3f    }JAVA中文站社区门户,g5hd5BGO5V'U
JAVA中文站社区门户-U7Z l|2\wAt
}JAVA中文站社区门户S(dlA Y8H
3、与类/接口相比
_+\ |S+x G=与类相同,不同的地方就是写法不一样(enum比较简单,但是写法比较陌生)
O4Lf;R9~(W?=同样可以添加方法,属性JAVA中文站社区门户'atj;nwPW
=enum不能继承类(包括继承enum),只能实现接口,类无此限制(除非用final来限制)。在这个方面,enum更像interfaceJAVA中文站社区门户F6I6}#Z"Cp+@d2^W
=enum只支持public和[default] 访问修饰,class支持比较丰富JAVA中文站社区门户8vfSQF[b#a9nu
=可以与下面的类比较一下,定义比较相似
;S-{*N3X H.` NPublic class Sex{
)gF5v1Q t/L4B R    Public static final Sex male = new Sex(1);
2t ^Kzy'yU#k    Public static final Sex female = new Sex(0);
WHr)r7`k0W9\k
a L,YSY    Private Sex(int value){
.u"F` [m(wZ1bC4^7t        This.value = value;
E NvSIz C+Ku;\}
V8Y0D8`eJG;}
"tmu3H`DPublic int getValue(){JAVA中文站社区门户S{UA|6k6f
    Return this.value;JAVA中文站社区门户t cs c MG'b4R
}
JD%w3W?J L u&l}
NH,fGL-uhJAVA中文站社区门户$K%]!sPbN(zi
=调用比较相似JAVA中文站社区门户 Z,`@e(m^G.U0C
SexEnum.male.getValue()JAVA中文站社区门户ais#O)QX
Sex.male.getValue()JAVA中文站社区门户AZ _;}[ a3}

9m3q,L*w$b LBh总结:其实完全能够用class替代enum,个人认为enum是早期面向过程中,简单数值枚举集合的一种表示,在java中对enum进行了扩展,让它只具有类的部分能力,导致结构不清晰,在java中进入enum有画蛇添足的感觉.
5?&{gk;ps
:nIpE _H}u ]更为重要的是,我们在进行设计的时候引入enum非常容易偏离OO思想,进入以数据或者过程为中心的路子
@,x Ga:wOfSR

TAG: Enum
 

评分:0

我来说两句

seccode