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);
        }
    }
  • 相关阅读:
    物联网和互联网到底有什么区别和联系呢?
    JAVA流程控制
    JAVA运算符
    JAVA中的变量及取值范围
    CSS position 属性
    web中的HTML CSS
    css选择器
    LAST_INSERT_ID
    [方法] 如何做产品规划
    [方法]需求挖掘采集的方法
  • 原文地址:https://www.cnblogs.com/vaer/p/4342641.html
Copyright © 2011-2022 走看看