Java-泛型类

class Worker{
    
}

class Student2{
    
}

/*
 * 泛型前做法
 */
class Tool{
    private Object obj;
    public void setObject(Object obj) {
        this.obj = obj;
    }
    public Object getObject() {
        return obj;
    }
}

/*
 * 泛型类
 * 什么时候需要定义泛型类
 * 当类中要操作的引用数据类型不确定的时候
 * 早期定义Object来完成扩展
 * 现在定义泛型来完成扩展
 */

class Utils<QQ>{
    private QQ q;
    public void setObject(QQ q) {
        this.q =q;
    }
    public QQ getObject() {
        return q;
    }
}

public class GenericDemo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Utils<Worker> u = new Utils<Worker>();
        
        u.setObject(new Worker());
        Worker w = u.getObject();
//        Tool t = new Tool();
//        t.setObject(new Worker());
//        Worker w = (Worker)t.getObject();

    }

}

--------------------------------------------------------------------------------------------------------------------------------------

//class Demo3<T>{
//    public void show(T t) {
//        System.out.println("show:"+t);
//    }
//    public void print(T t) {
//        System.out.println("print:"+t);
//    }
//}

/*
 * 泛型类定义的泛型,在整个类中有效,如果被方法使用
 * 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了
 *
 * 为了让不同方法可以操作不同类型,而且类型还不确定
 * 那么可以将泛型定义在方法上
 *
 * 特殊之处:
 * 静态方法不可以访问类上定义的泛型
 * 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
 */

//class Demo3{
//    public <T> void show(T t){
//        System.out.println("show:"+t);
//    }
//    public <Q> void print(Q q) {
//        System.out.println("print:"+q);
//    }
//}

class Demo3<T>{
    public <T> void show(T t){
        System.out.println("show:"+t);
    }
    public <Q> void print(Q q) {
        System.out.println("print:"+q);
    }
    public static <W> void method(W w) {
        System.out.println("method:"+w);
    }
}
public class GenericDemo3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo3<String> d = new Demo3<String>();
        d.show("haha");
        d.show(4);
        
        d.print(5);
        d.print("heihei");
        
        Demo3.method("hello");
//------------------------------------------------------        
//        Demo3 d = new Demo3();
//        d.show("haha");
//        d.show(new Integer(4));
//        d.print("heihei");
/*    ----------------------------------------------------    
//        Demo3<Integer> d = new Demo3<Integer>();
//        
//        d.show(new Integer(4));
//        d.print(6);
        
//        Demo3<String> d = new Demo3<String>();
        
//        d.show("haha");
//        d.print("hehe");
*/
    }

}

猜你喜欢

转载自blog.csdn.net/Lydia233/article/details/102398977