zoukankan      html  css  js  c++  java
  • Java第八章泛型

    八、泛型

    1.在集合中使用泛型 

     

    Map
     
    Map<String,Integer> map = new HashMap<>();
    map.put("AA",33);  
    
    List
    
    List<Integer> list = new ArrayList<Integer>()
    list.add(78);
    Iterator<Integer> it = list.iterator();
    while(it.hasNext()){
        sysout(it.next());
    }


    entry

    Set<Map.entry<String,Integer>> set = map.entrySet();
    for(Map.Entry<String,Integer> o : set){
        sysout(o.getKey() + "--->" +o.getValue());
    }

     

     

     

     

    2.自定义泛型类、泛型接口、泛型方法

     

    1.当实例化泛型类的对象时,指明泛型的类型
     指明之后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型
    2.如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的
     继承泛型类或泛型接口时,可以指明泛型的类型
        private T t;
        List<T> list = new ArrayList<>();
    自定义泛型类的使用:
    Order<Boolean> order = new Order<Boolean>();
    
    声明泛型方法
    public <E> E getE(E e){
     return e;
    }
    //当通过对象调泛型方法时,指明泛型方法的类型
    调用泛型方法
    Integer i =  order.getE(34);
    Double d= order.getE(2.3);

     

     

     

      

      自定义泛型类

     

      泛型类注意点

     

    泛型类
    1.静态方法中不能使用类的泛型
    2.如果泛型类是一个接口或抽象类,则不能创建泛型类的对象。
    3.不能在catch中使用泛型
    4.从泛型类派生子类,泛型类型需具体化
    把一个集合中的内容限制为一个特定的数据类型。

     

     

     

     

    3.泛型与继承的关系

     

    4.通配符

     

    ? extends A:可以存放A及其子类

    ? super   A:可以存放A及其父类

      注意:

     

  • 相关阅读:
    linux设置永久别名
    网站架构
    c#: 判断Firefox是否安装
    似是故人来
    Python: re.sub()第二个参数
    Python: AES加密与解密
    c#: Noto Sans字体如何支持韩文
    Inno Setup安装程序单例运行
    朵朵的二维码
    Python: 浅淡Python中的属性(property)
  • 原文地址:https://www.cnblogs.com/yangHS/p/10699725.html
Copyright © 2011-2022 走看看