GenericDemo3 泛型方法

/**
 *    泛型方法
 * 当方法要操作的类型和类上的泛型不一定一样.这时可以将泛型定义在方法上.这就是泛型方法
 *    
 */
public class GenericDemo3 {
 
    public static void main(String[] args) {
        Util<String> u = new Util<String>();
        u.show("abc");
//        u.show(6);     //编译报错    类型与定义的泛型不匹配
        Util<Integer> i = new Util<Integer>();
        i.show(6);
//        i.show("abc");    //编译报错    类型与定义的泛型不匹配
        //part2:
        i.show("abc");
        i.show(new Exception());    //什么类型都可以接收了
 
    }
 
}
 
/*part1: 泛型类 注意泛型定义的位置
 * 当方法要操作的类型和类上的泛型不一定一样.
 * 这是可以将泛型定义在方法上.
 * */
class Util <T>{
    public<Q> void show(Q q){    //part2: 这就是泛型方法
        System.out.println("show"+q);
    }
 
    public static <S>void print(S s /*T t*/ ){    
        //part3: 记住:如果方法是静态,还需要使用泛型,那么泛型必须定义在方法上。
        //原因在于:静态方法随着类的加载,而Util对象还每建立时,是不确定泛型参数是什么的,所以需要把泛型定义在静态方法上.
        System.out.println("print"+ s /*t*/);
    }
    public void show2(T t){
        /*code....*/
    }
}
posted @ 2016-05-02 23:08  安仔80  阅读(214)  评论(0编辑  收藏  举报