2005年7月30日

Generic type in Tiger
1. 受限范型是指类型参数的取值范围是受到限制的. extends关键字不仅仅可以用来声明类的继承关系, 也可以用来声明类型参数(type parameter)的受限关系.例如, 我们只需要一个存放数字的列表, 包括整数(Long, Integer, Short), 实数(Double, Float), 不能用来存放其他类型, 例如字符串(String), 也就是说, 要把类型参数T的取值范型限制在Number极其子类中.在这种情况下, 我们就可以使用extends关键字把类型参数(type parameter)限制为数字,
2. 在创建范型类的对象的时候, 和创建普通对象基本类似, 必须提供具体的类类型来替代类型参数T (J2SE 5.0目前不支持原始类型作为类型参数(type parameter)).
3. T和V虽然看起来是两个不同的类型参数, 但是在使用这个范型类的时候, T和V很有可能被替换成同一种类型. 因此在声明多个类型参数的范型类时, 要注意避免这种二义
性错误.
4. J2SE 5.0中提供了范型的通配符"?", "?"可以用来代替任何类型, 例如使用通配符来实现print方法
public static void print(GenList<?> list) {}
而非 public static void print(GenList<T> list){}
5. 范型的一些局限
5.1 类型参数不能实例化,例如
T t = new T(); // compiling error
5.2 不能实例化类型参数的数组
T[] ts = new T[10]; //compilation error
5.3 类的静态变量不能声明为类型参数类型
public class GenClass<T> {
    private static T t; // compiling error
}
5.4 范型类不能继承自Throwable以及其子类
public GenExpection<T> extends Exception{} // compiling error

The artical in dW.
posted @ 2005-08-11 15:46 Jason 阅读(230) | 评论 (0)编辑 收藏
 
1.所有创建的枚举类型都扩展于 java.lang.Enum. Enum 是在J2SE 5.0 里定义的一个新类,它本身不是枚举类型.在创建枚举类型时,必须用enum 关键字,不能直接地定义一个继承Enum的类来创建一个枚举类型,尽管所有创建的枚举类型实际上都是Enum 的子类. 如果直接继承Enum, compiler 就会报错(会导致编译错误).
2.枚举类型里定义的每一个值都是枚举类型的一个实例,比方说High是Priority的一个实例.枚举类型又是扩展于Enum. 所以枚举类型的每一个值声明时, 缺省时都将映射到Enum(String name, int ordinal) 构造函数中.
3.每一个创建的枚举类型都是Enum 的子类,除了上面调用父类 Enum 的构造函数外,枚举类型可以使用参数为定义一些自己的构造函数.当声明值时,只需调用此枚举类型定义的构造函数,而且不必添加 new 关键字.
4.枚举类型每一个值都是public, static and final的.也就是说,这些值是唯一的而且一旦定义了是不能被重写或修改.而且尽管在枚举类型每一个值声明时没有出现static关键字,实际上值都是 静态的, 而且我们不能在值前面加上static, public,final 修饰符
5.一是这些枚举类型的构造函数都是私有的.它是不能被其它的类或者其它的枚举类型调用的. 而且这个私有修饰符是由编译器自动加的,如果我们定义这些构造函数时,在前面加上public 修饰符, 就会导致编译错误. 二是变量定义必须在枚举类型值定义之后.
6.Summary
使用枚举类型是很简单的.它定义一个固定的、封闭的值集合,然后,在需要这些值中的某一个值时,可以通过它的名称来指定它,这就是枚举类型的简单性.枚举 类型的值就是枚举类型的实例,编译器会确保没有传入其他的类型,这就是枚举类型的安全性.这些枚举类型就是类本身,因此,可以对类进行的所有操作同样可以 作用于枚举类型上.我们要小心使用构造函数和函数重载方法,不要因为这些特性可用就任意使用它们.比如特定于常量的类主体,大多情况下可以用Switch 语句来代替,更容易让人理解而且不容易出错.我们也看到了Eclipse 3.1平台对枚举类型的支持,包括提供创建模板,错误信息提示等.总之,枚举类型的灵活应用能极大的方便和简化了我们的开发工作.

Original article: 在Eclipse 3.1中体验J2SE 5.0的新特性
posted @ 2005-07-30 16:51 Jason 阅读(291) | 评论 (1)编辑 收藏