|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
作者: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的使用 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |