首页 > 其他分享 >泛型

泛型

时间:2024-01-30 10:48:26浏览次数:16  
标签:子类 list fruit 类型 Fruit 泛型

泛型是一种强类型(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 "指定具体类型,类型一旦指定,其相关的参数或者返回值就只能是当前类型。

     

标签:子类,list,fruit,类型,Fruit,泛型
From: https://www.cnblogs.com/qlsty/p/17996578

相关文章

  • 无涯教程-Swift - Generics(泛型)
    Swift4语言提供"Generic"函数来编写灵活且可重用的函数和类型,泛型用于避免重复并提供抽象,Swift4标准库是使用泛型代码构建的。Swift4s的"Arrays"和"Dictionary"类型属于Generic集合。funcexchange(a:inoutInt,b:inoutInt){lettemp=aa=bb=temp}varn......
  • [Java]泛型
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17983795出自【进步*于辰的博客】启发博文:《java泛型详解-绝对是对泛型方法讲解最详细的,没有之一》(转发)。参考笔记三,P21.1、P42.1。注:引用启发博文中的两个概念:“类型......
  • Rust 泛型、Trait 和生命周期
    本文在原文基础上有删减,原文参考泛型、Trait和生命周期。目录泛型数据类型在函数定义中使用泛型结构体定义中的泛型枚举定义中的泛型方法定义中的泛型泛型代码的性能Trait:定义共同行为定义trait为类型实现trait默认实现trait作为参数TraitBound语法通过+指定多个traitb......
  • TS学习笔记四:函数及泛型枚举
      本节介绍ts的函数及泛型的相关内容,包括函数的声明格式及泛型的相关知识。B站视频https://player.bilibili.com/player.html?aid=495956203西瓜视频https://www.ixigua.com/7321535978286514727一、函数  函数是js程序的基础,可以实现抽象层/模拟类/信息隐藏和模块......
  • C#中的泛型(未完成)
    C#中的泛型泛型提供了一种更优雅的方式,可以让多个类型共享这一组代码,泛型允许声明类型参数化,用不同的类型进行实例化,在创建类的实例时指明真实的类型。在C#中,提供了5种泛型:类、结构、接口、委托、方法,前面4种是类型,方法是成员泛型类如何声明一个泛型类:在某些类型上使用占位......
  • Spring解决泛型擦除的思路不错,现在它是我的了。
    你好呀,我是歪歪。Spring的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽。但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻,但是最终了解到Spring有一个优雅的解决方案,然后去了解了一下,感觉有点意思。和你......
  • [JAVA] Java泛型实践
    Java泛型实践泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类......
  • 泛型
    01-泛型在集合、比较器中的使用1.什么是泛型?所谓泛型,就是允许在定义类、接口时通过一个`标识`表示类中某个`属性的类型`或者是某个方法的`返回值或参数的类型`。这个类型参数将在使用时(例如,继承或实现这个接口、创建对象或调用方法时)确定(即传入实际的类型参数,也称为类型实参)。2.......
  • 无涯教程-Java泛型 - 不允许 重载
    一个类不允许具有两个在类型擦除后可以具有相同签名的重载方法。classBox{//Compilererror//Erasureofmethodprint(List<String>)//isthesameasanothermethodintypeBoxpublicvoidprint(List<String>stringList){}publicvoidprint(Li......
  • Map&泛型&Collection工具类&File总结
    总结HashMap遍历方式//遍历map集合,Entry:键值对//遍历map的第一种方式:同时获取键和值,entrySet()Setset=hm.entrySet();//获取所有的键值对System.out.println(set);Iteratorit=set.iterator();while(it.hasNext()){Objectnext=it.next();......