美文网首页
java中的泛型

java中的泛型

作者: pretty_rain | 来源:发表于2019-08-26 15:52 被阅读0次
    1.泛型的概述

    是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型

    2.格式

    <数据类型> 只能是引用类型

    3.好处

    a:把运行时期的问题提前到了编译期间
    b:避免了强制类型转换
    c:优化了程序设计,解决了黄色警告线问题,让程序更安全

    4.泛型的用法

    a:泛型类

    class  Demo{
       ObjectTool<String> otool = new ObjectTool<String>();
       otool.show("hello");//hello
    }
    class ObjectTool<T>{
       public void show(T t){
             Systemo.out.println(t);
    }
    }
    

    b:泛型方法

    class  Demo{
       ObjectTool otool = new ObjectTool();
       otool.show("hello");//hello
    }
    class ObjectTool{
       public <T> void show(T t){
             Systemo.out.println(t);
    }
    }
    

    c:泛型接口a

    class  Demo{
       Animal<String>  animal= new Dog();
       otool.show("hello");//hello
    }
    class Dog implements Animal<String>{
       public  void show(String str){
             Systemo.out.println(str);
       }
    }
    public interface Animal<T>{
       public  void show(T  t){
             Systemo.out.println(t);
       }
    }
    

    d:泛型接口b

    class  Demo{
       Animal<String>  animal= new Dog<String>();
       otool.show("hello");//hello
    }
    class Dog<T> implements Animal<T>{
       public  void show(T  t){
             Systemo.out.println(t);
       }
    }
    public interface Animal<T>{
       public  void show(T  t){
             Systemo.out.println(t);
       }
    }
    

    e:泛型高级通配符 ?、? extends E、? super E

    class  Demo{
    //匹配所有
    Collection<?>  collection1 = new ArrayList<Animal>();
    Collection<?>  collection2 = new ArrayList<Dog>();
    Collection<?>  collection3 = new ArrayList<Cat>();
    Collection<?>  collection3 = new ArrayList<Object>();
    
    //匹配 animal和animal的子类
    Collection<? extends Animal>  collection1 = new ArrayList<Animal>();
    Collection<? extends Animal>  collection2 = new ArrayList<Dog>();
    Collection<? extends Animal>  collection3 = new ArrayList<Cat>();
    
    //匹配 animal和animal的父类
    Collection<? super Animal>  collection1 = new ArrayList<Animal>();
    Collection<? super Animal>  collection2 = new ArrayList<Dog>();
    Collection<? super Animal>  collection3 = new ArrayList<Cat>();
    }
    class Animal{ 
    }
    class Dog extends Animal{}
    class Cat extends Animal{}
    

    相关文章

      网友评论

          本文标题:java中的泛型

          本文链接:https://www.haomeiwen.com/subject/mkxdectx.html