java泛型实例化_java基础-泛型举例详解

泛型

泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。这种类型参数可以在类、接口、和方法的创建中,分别被称为泛型类、泛型接口、泛型方法。

一、认识泛型

在没有泛型之前,通过对类型Object的引用来实现参数的"任意化",但"任意化"带来的缺点是需要显示的强制类型转换,此种转换要求开发者对实际参数类型预知的情况下进行,对于强制转换错误的情况,编译器可能不会提示错误,但在运行时会出现异常,这是一个安全隐患。

举例:不使用泛型实现参数化类型

1 packagegeneric;2

3 public classNoGeneric {4 private Object ob; //定义通用类型成员

5 publicNoGeneric(Object ob) {6 this.ob =ob;7 }8 publicObject getOb() {9 returnob;10 }11 public voidsetOb(Object ob) {12 this.ob =ob;13 }14 public voidshowType() {15 System.out.println("实际类型是:"+ob.getClass().getName());16 }17 }18

19 packagegeneric;20

21 public classNoGenericDemo {22

23 public static voidmain(String[] args) {24 //TODO 自动生成的方法存根25 //定义类NoGener的一个Integer版本

26 NoGeneric intob = new NoGeneric(new Integer(66));27 intob.showType();28 int i =(Integer)intob.getOb();29 System.out.println("value="+i);30 System.out.println("-----------------------------");31 //定义类NoGeneric的一个String版本

32 NoGeneric strob = new NoGeneric(new String("hello"));33 strob.showType();34 String s =(String)strob.getOb();35 System.out.println("value="+s);36 }37 }

执行结果为:

实际类型是:java.lang.Integer

value=66

-----------------------------实际类型是:java.lang.String

value=hello

上面的实例有两点需要注意:首先如下语句

String s = (String)strob.getOb();

在使用时必须明确指定返回对象需要被强制转化的类型为String,否则无法编译通过;其次,由于intob和strob都属于NoGeneric的类型,假如执行如下语句

你可能感兴趣的:(java泛型实例化)