快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Jsdk5.0中新增枚举enum类型使用例解


作者:Junsan Jin

日期:2005-03-25

邮箱:junsan21@126.com ; junnef21@sohu.com

Jsdk5.0中新增了很多的特性,如泛型、增强的循环、改进的装、拆箱、静态引入等,大大增强了java语言的易用性。







我现在正在做一个从com+(dcom)平台到j2ee平台移植的项目,中间有很多枚举类型的定义,以前做起来要引入第三方类库,或者自己写类库,或者干脆定义成静态变量使用,很不方便,而且可能会产生很多问题。Jsdk5.0的发布正好解决了这些问题。







这里就枚举的应用举一个小例子说明,相信这样更轻易理解java中枚举的用法。







       普通无值枚举类型可定义成如下的形式:







private enum MyColor{  Red, Yellow, Blue }







       但我们用的时候很多情况下会用到值,所以下面的测试类更能说明java中枚举类型的强盛功能,代码如下:







class EnumTest







{







       private enum MyColor//定义一个MyColor的枚举类型







       {







              Red(1),//定义枚举类型的一个成员







              Yellow(2),







              Blue(3);







             







              private final int num;//序号的存储属性,由于序号通常比较稳定不希望被改变,所以声明成final







             







              MyColor(int num) //类似于类构造器的初始化方法,其会自动循环给成员赋值







              {







                     this.num = num;







              }







             







              private int getNum()//取得对应成员的序号







              {







                     return num;







              }                                







       }    







      







       public void showColor()//暴露给外部的访问接口







       {







              for ( MyColor mycolor : MyColor.values() )//这里用的新的增强的循环方法







                     System.out.println( mycolor + " = " + mycolor.getNum());







             







MyColor scolor = MyColor.Blue;  







              System.out.println(scolor);








 


 



              if(scolor.getNum()==3)//这里就是序号比较







              {







                     System.out.println("true");







              }







       }







      







       public static void main(String args[])//测试我们的类







       {







              EnumTest test = new EnumTest();







              test.showColor();







       }







}








 


 



在命令行下输入:







javac -source 1.5 EnumTest.java







注:有些5.0编译器默认以1.4.2为默认编译属性,所以,新特性无法识别,因此,要在编译命令行中加入 –source 1.5指定使用新的特性。







编译文件,然后输入







java EnumTest







运行结果为:







Red = 1







Yellow = 2







Blue = 3







Blue序号为:3







True








 


 



对于枚举类型的成员我们不仅可以指定序号,还可以指定其多个属性,还可以写很多方式在里面,因为java中的枚举就是面向对象的,是一个真正的类,就把java中的枚举当成一个类操作就行了。如sdk带的文档中的例子:







public enum Planet {



    MERCURY (3.303e+23, 2.4397e6),



    VENUS   (4.869e+24, 6.0518e6),



    EARTH   (5.976e+24, 6.37814e6),



    MARS    (6.421e+23, 3.3972e6),



    JUPITER (1.9e+27,   7.1492e7),



    SATURN  (5.688e+26, 6.0268e7),



    URANUS  (8.686e+25, 2.5559e7),



   

NEPTUNE (1.024e+26, 2.4746e7),



    PLUTO   (1.27e+22,  1.137e6);




 


    private final double mass;   // in kilograms



    private final double radius; // in meters



    Planet(double mass, double radius) {



        this.mass = mass;



        this.radius = radius;



    }



    private double mass()   { return mass; }



    private double radius() { return radius; }




 


    // universal gravitational constant  (m3 kg-1 s-2)



    public static final double G = 6.67300E-11;




 


    double surfaceGravity() {



        return G * mass / (radius * radius);



    }



    double surfaceWeight(double otherMass) {



        return otherMass * surfaceGravity();



    }



}



详细请参考sdk文档中的$jdk-1_5_0-doc$/docs/guide/language/enums.html。










返回类别: 教程
上一教程: J2se5.0 generis新特性
下一教程: java读取操作系统环境变量

您可以阅读与"Jsdk5.0中新增枚举enum类型使用例解"相关的教程:
· 在Struts中使用JavaBean和List(多行数据)类型属性
· 从SOCKET中读取数据时使用超时
· 使用JAVABEAN创建您的网上日历本(1)
· 使用JDBC创建数据库对象
· JSP入门初级教程之PLUGIN的使用
    微笑服务 优质保证 索取样品