• JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符


     

     个人博客网:https://wushaopei.github.io/    (你想要这里多有)

    1、泛型在集合中的使用

    1.1 在集合中使用泛型之前的例子

         

    为什么要有泛型(Generic)?

    1. 解决元素存储的安全性问题
    2. 解决获取数据元素时,需要类型强转的问题

    1.2 在集合中使用泛型例子1

            List<String> list = new ArrayList<String>();
    		list.add("aaaa");
    		List<Integer> list2 = new ArrayList<Integer>();
    		list2.add(1111);

    1.3 在集合中使用泛型例子2

            Map<String,Integer> map = new HashMap<String,Integer>();
    		map.put("aaa", 20);

    体会:使用泛型的主要优点是能够在编译时而不是在运行时检测错误。

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

    2.1 自定义泛型类

    public class Women<T> {
        T t;
    }

    思考?如何让子类指明父类的泛型类型
    当子类继承父类时,可以直接指明父类的泛型类型,那么子类就不用再声明泛型的类型了

    public class Women extends Creature<String> {}

    当子类继承父类时,不直接指明父类的泛型类型,那么子类就必须声明泛型的类型

    public class Women<T> extends Creature<T> {}

    2.2  自定义泛型接口

    public interface Buy<T> {
        public void setT(T t);
    }

    2.3  自定义泛型方法

    public <E> E setE(E e){
    	return e;
    }

    说明:泛型方法可以使用static修饰

    3、 泛型与继承

       

    示例:

    public void testGenericAndSubClass() {
    	Person[] persons = null;
    	Man[] mans = null;
    	// 而 Person[] 是 Man[] 的父类.
    	persons = mans;
    
    	Person p = mans[0];
    
    	// 在泛型的集合上
    	List<Person> personList = null;
    	List<Man> manList = null;
    	// personList = manList;(报错)
    }
    

    4、 通配符 - ?

    4.1通配符的使用说明:

    说明:        <?>是所有泛型类型的父类
    读取数据:使用通配符泛型的集合能读取数据。
    存数据 :   只能存储null

    4.2  通配符的限制说明:

    <? extends Number>     (无穷小 , Number]

    只允许泛型为Number及Number子类的引用调用

    <? super Number>      [Number , 无穷大)

    只允许泛型为Number及Number父类的引用调用

    <? extends Comparable>

    只允许泛型为实现Comparable接口的实现类的引用调用

  • 相关阅读:
    Roslyn 编译器和RyuJIT 编译器
    go语言---defer
    go语言---for
    go语言--time.After
    go语言---for range
    用gulp打包带参数资源做法与asp.net/java项目结合的自动构建方案探讨
    JQuery判断元素是否存在
    gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
    gulp同步执行任务
    gulp-rev同时将js和css文件写在一个rev-manifest.json文件里面的方式探讨
  • 原文地址:https://www.cnblogs.com/wushaopei/p/12259540.html
Copyright © 2020-2023  润新知