zoukankan      html  css  js  c++  java
  • 泛型

    package com.xiaofan.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.junit.Test;
    
    public class GenericTest {
        
        /**
         * 方法上声明泛型
         */
        public <T> List<T> p(T t) {
            System.out.println(t);
            List<T> list = new ArrayList<T>();
            return list;
        }
        /**
         * 方法上声明泛型,测试
         */
        @Test
        public void demo2() {
            List<String> list1 = p("abc");
            List<Integer> list2 = p(100);
            List<ArrayList> list3 = p(new ArrayList());
        }
        /**
         * 测试类上面声明泛型
         */
        @Test
        public void demo3(){
            GenericDao<String> genericDao = new GenericDao<String>();
            genericDao.save("aaa");
            String id = genericDao.getId(0);
    
            GenericDao<Integer> genericDao2 = new GenericDao<Integer>();
            genericDao2.save(100);
            int id2 = genericDao2.getId(0);
            // 阅读ArrayList 和 HashMap 源码 ctrl+ shift+T
        }
    }
    /**
     * 类上面声明泛型
     */
    class GenericDao<T> {
        private T field1;
    
        public void save(T obj) {
        }
    
        public T getId(int id) {
            return field1;
        }
    }

    泛型的上限,下限,通配符

    package com.xiaofan.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.junit.Test;
    
    public class GenericTest3 {
    
        public void print(List<?> list) {
            for (int i = 0; i < list.size(); i++) {
                Object value = list.get(i);
                System.out.println(list.get(i));
            }
        }
    
        @Test
        public void demo1() {
            List<String> list1 = null;
            List<Integer> list2 = null;
            print(list1);
            print(list2);
    
            List<Number> list3 = new ArrayList<Number>();
            add(list3);
    
            List<Byte> list4 = new ArrayList<Byte>();
            add(list4);
        }
    
        public void add(List<? extends Number> list) {
            // list.add(100);
            Number a = list.get(0);
        }
    
        public void add2(List<? super Integer> list) {
            list.add(100);
        }
    }
  • 相关阅读:
    oracle 17068
    Nginx
    B/S端开发工具DevExtreme Angular控件
    UI组件库Kendo UI for Angular入门指南教程
    DevExpress WinForms v21.1
    WPF应用界面开发入门教程
    界面控件Telerik UI for WinForm初级教程
    十六、内联style.html
    十五、css样式class的多种用法
    十四、系统修饰键
  • 原文地址:https://www.cnblogs.com/vaer/p/4342641.html
Copyright © 2011-2022 走看看