Java泛型简介(6)

来源:互联网 发布:麦克尼尔人类网络 编辑:程序博客网 时间:2024/06/06 12:51

泛型简介:

泛型(Generic Type)是JDK1.5引入的影响最深远、对语言本身变革最大的Java新特性。

特点:

1)泛型可以将类型作为参数进行传递,即类型可以像参数一样实现参数化。

2)在编译的时候检查类型安全。

3)所有的强制转换都是自动和隐式的。

泛型类:

定义:泛型类即在类的定义中声明了范型参数

泛型类的声明格式:class Test<T>{ //类的体内容 }。

尖括号中出现的T就是一种类型参数,将来使用这个类生成的对象时,该对象所接收的类型便成为在Test类中可使用的真正类型。

泛型类的一个实例:



泛型类可以拥有一个类型,也可以拥有多个类型,例如:class Test<T,U,...>{ //类的体内容 }。

注意:类型参数使用大写形式,且比较短,这是最常使用的。

在Java中,使用E表示集合的元素类型;K和V分别表示键与值的类型;T(需要的时候还可以用U和S等)表示任意类型。

泛型方法

定义:范型方法即在方法定义中声明了范型参数的方法。

泛型方法的声明格式:

修饰符范型声明 返回类型 方法名(参数列表){

   //方法体

}

泛型方法的例子:

public <T> static String fun2(Tvalue1,T value2){             returnvalue1+","+value2;}public <T,U> void fun(T t1,T t2,Uu1,U u2){         //......}

受限制的泛型

定义:所谓受限的范型就是在声明范型参数时,对其可代表的类型范围进行限制。

声明受限范型参数的语法格式:

<范型参数 extends 最大范围类型>

示例:

public class MyClass<T extendsNumber> {

         //……

}

注:这样定义表示类型参数T只能取Number或者其子类型。

示例:开发一个方法,比较两个同类型对象

public static <T extendsComparable<T>> int pk(T o1,T o2){                   if(o1==null&&o2==null){                            return0;                   }elseif(o1==null){                            return-1;                   }elseif(o1==null){                            return1;                   }                   returno1.compareTo(o2);}

使用通配符

定义:在声明范型类的变量时可以使用通配符

使用通配符限制上界:<? extends 上界类型>

示例:

List<? extends Number> list=newArrayList<Integer>();

List<? extends Object> list=newArrayList<String>();

该语句也可写成如下形式:

List<?> list=newArrayList<String>();

注:使用<? extends ...>的定义的对象,不可以调用传递范型参数的方法。

使用通配符限制下界:<? super 下界类型>

示例:

List<? super Number> list=newArrayList<Serializable>();

在创建对象中不可以使用通配符。

原创粉丝点击