分类:
2008-10-15 13:45:00
简介
泛型其实并不是一种新的语言元素,中早就就有,但是在之后的java却没有吸收这个特性,现在也有了泛型的特性,大概也和。Net的竞争有关系吧。
首先看泛型的一个应用。
在过去,我们可能经常要写一些类似这样的代码:
List stringList=new LinkedList(); |
实际上第三行对String的类型转换意义并不大,因为通常我们如果在操作一个List,都是知道这个List里面放的是什么类型对象的,但是我们如果不这样写又通不过语法检查。
利用java的泛型机制,我们可以这么写:
List |
这样做的好处是在定义容器的时候就指明了容器中的类型,一方面我们不再需要取一个元素时候做强制类型转换,另外一方面如果在这个容器中放入的对象类型不符合要求,那么会在编译时候产生一个错误,而不是在运行时候才抛出一个异常。
另外这样也提高了程序的可读性。
泛型类型的定义
下面是一个简单的使用泛型类的定义:
public class MyGenericClass public T getValue() { public void setValue(T value) { |
值得注意的一点是,静态变量不能够使用泛型定义,也就是说类似下面的语句是非法的:
public class MyGenericClass public static T value;//错误的定义 } |
此外,泛型的定义不会被继承,举个例子来说,如果A是B的子类,而C是一个声明了泛型定义的类型的话,C不是C的子类。为了更好的说明,可以看下面的代码,这段代码是错误的。
List List |
不过这样一段代码是正确的:
List |
[1]