zoukankan      html  css  js  c++  java
  • java泛型

    java中关于泛型的有关知识

    一.为什么要有泛型(Generic)

        1.解决元素存储的安全性问题

        2.解决获取数据元素时,需要类型强转的问题

        

     

    二.在集合中使用泛型

    public class TestGeneric {
           //1.在集合中不用泛型的情况
           public void Test1(){
              List list=new ArrayList();
              list.add(87);
              list.add(89);
              list.add(95);
              //1.没有使用泛型,任何Object及其子类的对象都可以添加进来
              list.add(new String("aa"));
              for(int i=0;i<list.size();i++){
                  //2.强转为int型时,可能报ClassCastException的异常
                  int score=(Integer)list.get(i);
                  System.out.println(score);
         }
    }
    
         //2.在集合中使用泛型
         public void test2(){
              List<Integer> list=new ArrayList<Integer>();
              list.add(89);
              list.add(87);
              //list.add("aa");
    
              //输出list中存储的整数
              Iterator<Integer> it=list.iterator();
              while(it.hasNext())
              System.out.println(it.next());
    }
    
          //3.在Map中使用泛型
          public void test3(){
              Map<String,Integer> map=new HashMap<String,Integer>();
              map.put("aa", 87);
              map.put("bb", 90);
              map.put("cc", 95);
    
              Set<Map.Entry<String, Integer>> set=map.entrySet();
              for(Map.Entry<String, Integer> o:set){
              System.out.println(o.getKey()+"---->"+o.getValue());
             }
        }
    }

    三.自定义泛型类

    1.实例化泛型类的对象时,指明泛型的类型,则对应的类中所有使用泛型的位置,都变为实例化中指定的泛型类型。

    2.如果我们自定义了泛型类,对象实例化时没有指定泛型,默认为Object型的。

    3.继承泛型类或泛型接口时,可以指明泛型的类型,也可以不指明

    class SubOrder extendx Order<Integer> {}

    class SubOrder<T> extendx Order<T>{}

     4.加入集合中的对象类型必须与指定的泛型类型一致

    class Person<T>{
    
           //使用T类型定义变量
    
           private T info;
    
           //使用T类型定义一般方法
    
           public T getInfo(){
    
                 return info;
    
           }
    
           public void setInfo(T info){
    
                 this.info = info;
    
            }
    
           //使用T类型定义构造器
    
            public Person(){}
    
            public Person(T info){
    
                  this.info = info;
    
             }
    
            //static的方法中不能声明泛型
    
            //public static void show(T t){
    
            //}
    
            //不能在try-catch中使用泛型定义
    
            //try{}
    
            //catch(T t){}
    
    }
    
     
  • 相关阅读:
    因安装包依赖问题导致无法安装的解决办法!
    Ubuntu18.04安装qemu遇到问题-qemu : Depends: qemu-system (>= 1:2.11+dfsg-1ubuntu7)
    理解mount -t proc proc /proc
    printf "%.*s"
    Linux 内核内存分配函数devm_kmalloc()和devm_kzalloc()
    为什么 extern 使用 const 修饰的变量会编译不过?
    php openssl_sign 对应 C#版 RSA签名
    win7中用iis部署ssl服务
    找出windows系统上最大的文件
    windows 创建指定大小文件
  • 原文地址:https://www.cnblogs.com/xujiming/p/4636238.html
Copyright © 2011-2022 走看看