图 使用类向导创建范型类使用Eclipse接口向导创建范型接口
图 使用接口向导创建范型接口范型方法
类型参数(type parameter)不仅仅可以用来声明范型类或者范型接口 也可以用来声明范型方法 而且这种声明的范型方法可以用在非范型类中 声明范型方法的一般格式是
清单 范型方法的一般形式
returntype methodname(parameterlist) {}
清单 范型方法示例
publicString getString(T obj) {
return objtoString();
}
受限范型
受限范型是指类型参数的取值范围是受到限制的
extends关键字不仅仅可以用来声明类的继承关系也可以用来声明类型参数(type parameter)的受限关系例如我们只需要一个存放数字的列表 包括整数(Long Integer Short) 实数(Double Float)不能用来存放其他类型 例如字符串(String)
也就是说 要把类型参数T的取值范型限制在Number极其子类中在这种情况下 我们就可以使用extends关键字把类型参数(type parameter)限制为数字
清单 受限范型示例
public class Limited {
public static void main(String[] args) {
Limited number; //正确
Limited str; //编译错误
}
}
在Eclipse 中 上例中的编译错误信息如下图所示
图 由于受限范型导致的编译错误 在程序中使用范型
在程序中使用范型类
在创建范型类的对象的时候 和创建普通对象基本类似 必须提供具体的类类型来替代类型参数T (JSE 目前不支持原始类型作为类型参数(type parameter))
清单 使用范型类
//如果需要整型的列表
GenList integerList = new GenList();
//如果需要字符型的列表
GenList strList = new GenList();
//不能使用原始类型
GenList nList = new GenList();//编译错误
使用范型解决类型安全性问题
使用范型实现的列表是类型安全的 下列破坏类型安全语句会在编译的时候检查出来 把鼠标放在错误标记上 Eclipse 中的错误提示就会显示如下图所示