文/陈刚 2005-11-09
一、前言
JDK5.0出来有快一年了吧,泛泛的浏览过一些资料,不知道是文章写得生涩,还是我愚笨,总之是没太明白。反正所做的项目也没有用到,所以放在了一边。近来公司平台升级到JBOSS4和JDK5,看来要仔佃看它一看看。上网搜索了一些资料,花了两小时阅读,算明白了一些,好象也不是很难。现将心得和理解结集成文,以便后来者。
JDK5.0主要有哪些新特性呢?如下列表
- 泛型
- 增强的for循环
- 自动装箱和自动拆箱
- 类型安全的枚举
- 可变长度参数
- 静态引入
- 元数据(注解)
- C风格的格式化输出
本文先讲“类型安全的枚举”。
二、旧的历史
举个例:有一个如下的“花(flower)”类,它有一个颜色(color)属性,用int型来表示其颜色。
public class Flower {
private int color;
public void setColor(int color) {
this.color = color;
}
public int getColor(){
return color;
}
}
这时一般我们会创建一个常量类,来存放颜色常量,如下:
public interface Color {
int RED = 0;
int BLACK = 1;
int YELLOW = 2;
int BLUE = 3;
int WHITE = 4;
int ORANGE = 5;
}
以后我们用的时候就可以这样:
public class Client {
public static void main(String[] args) {
Flower f = new Flower();
f.setColor(Color.RED);
}
}
Color类就是一个我们自己来实现的枚举类,当然它并不是严格意义上的枚举类,而且JDK5.0之前还没有枚举。这时会出现一个问题:setColor参数是int型,那么也许用户会不小心用一个非法的int值赋进去,这样就可能产生BUG,如:f.setColor(100);显示100并非是我们设定中的颜色值。
在那本有名的java著作<<Effective java>> Joshua Bloch,用了专门的一章(第5章)来讨论这