java 枚举类型
Tiger 中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据 片断,而且全部都以类型安全的形式来表示。Tiger 专家、developerWorks 的多产作者 Brett McLaughlin将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的
public static final 代码。
您已经知道,Java 代码的两个基本的构造块是类 和接口。现在 Tiger 又引入了枚举,一般简称它为 enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定 义的值集合。
当然,熟练的程序员可以用静态常量实现这项功能,如清单 1 所示:
清单 1. public static final 的常量
public class OldGrade {
public static final int A = 1;
public static final int B = 2;
public static final int C = 3;
public static final int D = 4;
public static final int F = 5;
public static final int INCOMPLETE = 6;
}
说明:我要感谢 O'Reilly 媒体公司,该公司允许在本文中使用我撰写的 Java 1.5 Tiger:
A Developer's Notebook 一书中“枚举”这一章中的代码示例(请参阅参考资料)。
然后您就可以让类接受像 OldGrade.B 这样的常量,但是在这样做的时候,请记住这类常量
是 Java 中 int 类型的常量,这意味着该方法可以接受任何 int 类型的值,即使它和
OldGrade 中定的所有级别都不对应。因此,您需要检测上界和下界,在出现无效值的时候,可能还
要包含一个 IllegalArgumentException。而且,如果后来又添加另外一个级别(例如
OldGrade.WITHDREW_PASSING),那么必须改变所有代码中的上界,才能接受这个新值。
换句话说,在使用这类带有整型常量的类时,该解决方案也许可行,但并不是非常有效。幸
运的是,枚举提供了更好的方法。
定义枚举
清单 2 使用了一个可以提供与清单 1 相似的功能的枚举:
清单 2. 简单的枚举类型
package com.oreilly.tiger.ch03;
public enum Grade {
A, B, C, D, F, INCOMPLETE
};
在这里,我使用了新的关键字 enum,为 enum 提供了一个名称,并指定了允许的值。然后
,Grade 就变成了一个枚举类型,您可以按清单 3 所示的方法使用它:
清单 3. 使用枚举类型
package com.oreilly.tiger.ch03;
public class Student {
private String firstName;
privat
相关文档:
java经典书籍汇总(部分)
一、入门
《Java 2从入门到精通》- 推荐
《Thinking in Java》- 强烈推荐*
O’reilly的Java编程基础系列 - 参考*
二、进阶
《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当 ......
封装类也叫包装类,是针对八种基本定义相应的引用类型。
基本数据类型 封装类
boolean &nbs ......
由于有一定的Java和JUnit的基础,所以感觉第一课比较简单,但收获还是有的,比如说重构部分介绍的内容。
JUnit要点:
测试方法的命名规则:
l 方法必须声明为public
l 方法的返回值必须为void
l 方法的名字必须以小写的test为前缀
l 方法不能接受任何参数
重构要点:
1. &nbs ......
级别: 中级
李 凌
, 软件架构师, IBM
2009 年 12 月 10 日
随
着多核 CPU 的日益普及,越来越多的 Java
应用程序使用多线程并行计算来充分发挥整个系统的性能。多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞
争,导致系统瘫痪。因此,需要一种运行时线程监控工 ......
1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。
2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networking、multithreading、reflection、event、handling、NIO、localiza ......