JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
Jsdk5.0中新增枚举enum类型使用例解
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

作者: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


上一篇:hibernate in 查询

下一篇:Jsdk5.0中新增枚举enum类型使用例解

  • Java新手留意:Java编程三十条规则
  • int i=0;i=i++;i=?//简单问题背后的不简单道理
  • JavaMail发送邮件中主题乱码的解决方法
  • 告别System.out.print()—J2SDK1.4新增Java日志框架(三)
  • Hibernate 应用总结
  • abstract class && Interface 比较
  • 谈JDBC SQLSERVER"Error establishing socket"
  • Eclipse, Lomboz and Tomcat 的配置和调试
  • Java布局管理器深入讨论
  • pet store 的设计目标
  • J2ee与ASP.NET平台电子企业的两种构想(8)
  • 定义自己的Connection Pool
  • JDBC连接DB2数据库详解
  • CLASSPATH详解
  • 在csdn上看到的怪问题
  • Java下的Framework编写(4)--Annotation vs XML
  • (albertyi原创)Eclipse 安装,调试快速入门
  • 基于容器的用户安全管理系统和JMS(7)
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号