泛型

泛型是一种强类型(strongly-typed)编程机制,它允许你编写具有参数化类型的代码,以便更加灵活和安全地处理不同数据类型的对象。泛型提供了编译时类型检查,这有助于在编译时捕获潜在的类型错误,而不是在运行时,在运行时泛型将会被彻底擦除。

  1. 基础应用包含泛型类、泛型方法、泛型属性等,在这里就不一一举例了。
  2. 泛型中extends和super的理解和应用;

    解释:

           <? extends T> :指定类型必须是当前类型T和T的子类,用于取数据;

           <? super T>    :指定类型必须是当前类型T和T的超类,用于存数据;

    应用:

           public  void getFood(List<<? extends Food>> list){

              Food food = list.get(0);

              Fruit fruit = new Fruit();

              list.add(fruit);         //编译报错,因为list对应的真实类型为Food的子类,不确定具体是哪个子类,编译器无法将fruit和list的类型进行匹配。

           }

    ========================================================

           public  void loadFood(List<<? super Fruit>> list){

              Fruit fruit = new Fruit();

              list.add(fruit);         

              Fruit f = list.get(0);      //编译报错,因为list对应的真实类型为Fruit的超类,Furit不能直接接收其元素。

           }

  3. 泛型中通配符" ?"和" T "的理解和应用
    1. 声明时不影响,在使用的过程中" ?"可以为任何类型,相应的其能对象能使用的方法就会少很多;
    2. 声明时不影响,在使用的过程中会对泛型" T "指定具体类型,类型一旦指定,其相关的参数或者返回值就只能是当前类型。

     

posted @ 2024-01-30 10:30  骑驴晒太阳  阅读(17)  评论(0)    收藏  举报