首页 > 其他分享 >泛型

泛型

时间:2024-08-12 14:30:03浏览次数:6  
标签:java 通配符 接口 类型 泛型 type

1、Object类

在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。

2、泛型

也是实现参数类型的任意化,但是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。

 

一、通配符和类型限定

通配符【?】

  • 表示不确定的 java 类型;一般是用作<? extends 具体类型>或者<? super 具体类型>

  • 通配符只允许出现在引用中(普通变量引用、形参),不允许出现在泛型定义中(泛型类、泛型接口、泛型方法的< >里)

类型限定【T、K、V、E】

  • 约定俗称的东西,并不是java中规定的,可以换成任意一个字母,但是可读性会变差;用来表示泛型

  • T (type) 表示具体的一个java类型

  • K、V (key value) 分别代表java键值中的Key Value

  • E (element) 代表Element

区别:

1、“T”和“?”运用的地方不同:“?”是定义在引用变量上,“T”是类上或方法上。

2、类型限定只有<T extends 数据类型> ,只能设定上边界,而通配符既可以设定上边界<? extends 数据类型>也可以设定下边界<? super 数据类型>

https://blog.csdn.net/a18615971648/article/details/115799984

二、泛型接口

Java接口使用泛型,有两种方式!

  • 第一种在实现接口的子类依旧使用泛型,在实例化的时候在动态添加type

  • 第二种形式,子类实现接口的时候具体化type,在实例化的时候不用再动态添加type

标签:java,通配符,接口,类型,泛型,type
From: https://www.cnblogs.com/zhegemaw/p/18354865

相关文章

  • 【Java数据结构】---泛型
    乐观学习,乐观生活,才能不断前进啊!!!我的主页:optimistic_chen我的专栏:c语言,Java欢迎大家访问~创作不易,大佬们点赞鼓励下吧~文章目录包装类装箱和拆箱泛型泛型语法擦除机制泛型的上届泛型方法静态泛型方法完结包装类在Java中,由于基本类型不是继承自Objec......
  • C# 泛型简单概括
    一、泛型的概念,定义,运行原理,优势1.泛型的概念泛型(generic)是C#2.0推出的新语法,并不是语法糖,它是专门为处理多段代码在不同的数据类型上执行相同的指令的情况而设计的。即泛型让不同的数据类型支持相同的业务逻辑。泛型是一个复合类型,把多个类型混合一起作用,比如:方法和泛......
  • C#类继承自泛型集合
    继承自泛型字典的例子这段代码定义了一个多层嵌套的字典结构,旨在组织和存储复杂的层级数据usingSystem;usingSystem.Threading.Tasks;classContract:Dictionary<string,Dictionary<string,Dictionary<string,string>>>{privatereadonlystringtype="a......
  • C#类继承自泛型集合
    继承自泛型字典的例子这段代码定义了一个多层嵌套的字典结构,旨在组织和存储复杂的层级数据usingSystem;usingSystem.Threading.Tasks;classContract:Dictionary<string,Dictionary<string,Dictionary<string,string>>>{privatereadonlystringtype="autodes......
  • go 通过泛型实现通用的增删改查
    接口typeIpagedbRequestModel[Tany]interface{Insert(entity*T)errorUpdate(entity*T)errorInsert2Result(entity*T)*pagemodel.IchubResult[T]Update2Result(entity*T)*pagemodel.IchubResult[T]DeleteById(idint64,keys...string)......
  • LangChain与泛型编程:探索代码生成的新维度
    LangChain与泛型编程:探索代码生成的新维度在软件开发领域,泛型编程是一种允许创建可重用组件的技术,这些组件可以在多种数据类型上工作的编程范式。LangChain作为一个假设的编程辅助工具,如果存在,它可能会支持泛型编程,以增强其代码生成的能力。本文将探讨LangChain对泛型编程......
  • 行为类似于基本类型的泛型类型
    我想创建一个泛型类型A[T],其行为与T完全相同,只不过我可以在运行时告诉我该类型实际上是A[T]而不是T我尝试过classA(Generic[T],T):pass但是似乎不起作用,正如mypy抱怨的那样,例如,A[str]的类型为object作......
  • 泛型
    泛型目录泛型泛型的定义泛型的作用泛型的特性泛型的使用泛型的定义Java泛型是在JavaSE5中引入的一种特性,它允许你为你的类、接口和方法指定类型参数,从而使得代码更加类型安全和灵活。泛型的本质是参数化类型,即在编译时提供类型信息,以确保类型的正确性。java复制publicclass......
  • JSON反序列化中的泛型问题及解决方法
    1、问题Java的泛型是编译期擦除,因此反序列化无法直接指定泛型类型:List<User>list=JsonbBuilder.create().fromJson(json,List<User>.class);编译不通过,改为List.class又达不到预期效果。2、解决办法jackson的做法:List<User>list=JsonbBuilder.create().fromJson(jso......
  • 泛型
    泛型1.什么是泛型在Java中,泛型(Generics)是Java5(也称为JavaSE5.0或JDK1.5)中引入的一个重要特性,它提供了一种编译时类型安全检测机制,允许程序员在类、接口和方法中使用类型参数(TypeParameters)。这些类型参数在编译时会被具体的类型所替换,从而实现了代码的复用和类型安全。泛......