当前位置:编程学习 > JAVA >>

泛型之--------通配符

1、匹配任意的通配符
在开发中对象的引用传递是最常见的,如果在泛型类的操作中,在进行引用传递的时候泛型类型必须匹配才可以传递,否则是无法传递的。
 
class Info<T>{  
    private T var ;     // 定义泛型变量  
    public void setVar(T var){  
        this.var = var ;  
    }  
    public T getVar(){  
        return this.var ;  
    }  
    public String toString(){   // 直接打印  
        return this.var.toString() ;  
    }  
};  
public class GenericsDemo12{  
    public static void main(String args[]){  
        Info<String> i = new Info<String>() ;       // 使用String为泛型类型  
        i.setVar("MLDN") ;                          // 设置内容  
        fun(i) ;  
    }  
    public static void fun(Info<Object> temp){        // 接收Object泛型类型的Info对象  
        System.out.println("内容:" + temp) ;  
    }  
};  

 

编译时错误:
 
 
class Info<T>{  
    private T var ;     // 定义泛型变量  
    public void setVar(T var){  
        this.var = var ;  
    }  
    public T getVar(){  
        return this.var ;  
    }  
    public String toString(){   // 直接打印  
        return this.var.toString() ;  
    }  
};  
public class GenericsDemo13{  
    public static void main(String args[]){  
        Info<String> i = new Info<String>() ;       // 使用String为泛型类型  
        i.setVar("MLDN") ;                          // 设置内容  
        fun(i) ;  
    }  
    public static void fun(Info temp){      // 接收Object泛型类型的Info对象  
        System.out.println("内容:" + temp) ;  
    }  
};  

 

 
以上确实完成了改进的功能,但是,代码似乎有些不是太妥当,毕竟之前已经指定过泛型了。
 
class Info<T>{  
    private T var ;     // 定义泛型变量  
    public void setVar(T var){  
        this.var = var ;  
    }  
    public T getVar(){  
        return this.var ;  
    }  
    public String toString(){   // 直接打印  
        return this.var.toString() ;  
    }  
};  
public class GenericsDemo14{  
    public static void main(String args[]){  
        Info<String> i = new Info<String>() ;       // 使用String为泛型类型  
        i.setVar("MLDN") ;                          // 设置内容  
        fun(i) ;  
    }  
    public static void fun(Info<?> temp){     // 可以接收任意的泛型对象  
        System.out.println("内容:" + temp) ;  
    }  
};  

 

如果使用?意味着可以接受任意的内容,但是此内容却无法直接使用<?>修饰的泛型对象进行修改。
 
class Info<T>{  
    private T var ;     // 定义泛型变量  
    public void setVar(T var){  
        this.var = var ;  
    }  
    public T getVar(){  
        return this.var ;  
    }  
    public String toString(){   // 直接打印  
        return this.var.toString() ;  
    }  
};  
public class GenericsDemo15{  
    public static void main(String args[]){  
        Info<?> i = new Info<String>() ;        // 使用String为泛型类型  
        i.setVar("MLDN") ;                          // 设置内容  
    }  
};  

 

 
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,