在前面的练习中,存入容器的对象在取出时需要强制转换类型,因为对象加入容器时都被转换为Object类型,而取出时要转成实际类型。会出现潜在的危险。那么有什么方法可以让装入容器的数据保存自己的类型而不被转换成Object对象呢?泛型只是编译时的概念,是供编译器进行语法检查用的(由于程序员需要一种类型安全的集合,这是这种需求促成了泛型的产生)。所谓泛型,就是在定义(类的定义、方法的定义、形式参数的定义、成员变量的定义等)的时候,指定它为通用类型,也就是数据类型可以是任意类型,具体调用的时候,要将通用类型转换成指定的类型来使用。泛型为提高大型程序的类型安全和可维护性带来了很大的潜力。它与JDK5.0中其他几个新的语言特性相互协作,包括增强的for循环、枚举和自动装箱。
package cn.itcast.demo;
import org.junit.Test;
class CPrinter <T>
{
public void print()
{
System.out.println("打印彩色");
}
}
class WPrinter <T>
{
public void print()
{
System.out.println("打印黑白");
}
}
class PrintHandle<T>
{
private T t;
public PrintHandle(T t)
{
this.t = t;
}
public T getT()
{
return t;
}
public void setT(T t)
{
this.t = t;
}
}
public class FanxingTest {
@Test
public void test()
{
PrintHandle <CPrinter> tp = new PrintHandle(new CPrinter());
tp.getT().print();
PrintHandle <WPrinter> wp = new PrintHandle(new WPrinter());
wp.getT().print();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}