泛型技术

来源:互联网 发布:淘宝联盟批量链接工具 编辑:程序博客网 时间:2024/06/05 15:15

1、自定义泛型---泛型方法

java程序中的普通方法,构造方法和静态方法中都可以使用泛型。方法使用泛型前,必须对泛型进行声明。语法:

<T>,T可以是任意字母,但通常必须 要大写。<T>通常需放在方法的返回值声明之前,如:

public <T>  void method1(T t){}
注意:只有对象类型才能作为泛型方法的实际参数,在泛型方法中可以申请多个泛型参数。

public static <K, V>V getValue(K key){return map.get(key);}
2.自定义方法--泛型类

当一个类中的所有方法都采用的是泛型的时候,可以将此类定义为一个泛型类。这样其中的方法可以不用按普通方式书写,但都既有了泛型特性。如:

class MethodGenericDemo{public <T>  void method1(T t){System.out.println(t);}public <T>  void method2(T t){System.out.println(t);}}
可以写成泛型类,如下:

class MethodGenericDemo<T>{public  void method1(T t){System.out.println(t);}public  void method2(T t){System.out.println(t);}}
//值得注意的是,在泛型类中,泛型只能作用于非静态方法,对与静态方法,要使用泛型,依然需要使用泛型方法,如下:

class MethodGenericDemo<T>{public  void method1(T t){System.out.println(t);}public  void method2(T t){System.out.println(t);}//泛型类只对非静态方法有效,对非静态方法无效public static<T> void method3(T t){System.out.println(t);}}

测试函数:

public class MethodGeneric {public static void main(String[] args){MethodGenericDemo demo = new MethodGenericDemo();demo.method1(new String("aaa"));demo.method2(new Integer(3));}}

3.泛型高级应用,通配符?

当接受的类型不确定时,可以使用?通配符,?可以指向任何类型,如下所示:

public static void print(Collection<?> c){ //Collection<?>发音为Collection of unknownfor(Object o:c){System.out.println(o);}}

由于?指向的是一个不确定的类型,因此不能使用该对象调用一个和类有关的方法,因为有些其它类并没有此种方法,java在语法上会报错。只能调用和类无关的方法

4.泛型高级应用---有限制的通配符

0 0
原创粉丝点击