Java-很深我只知其一-泛型

news2024/12/23 14:06:12

Java-很深我只知其一-泛型

目录

泛型历史

泛型类/泛型接口

 泛型方法

 泛型属性

 泛型约束


  • 泛型历史

  1. JAVA 泛型(generics)是 JDK 5 中引入的一个新特性, 允许程序员在编程时指定类型参数,使编译器可以在编译代码时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
  2. JDK 7之后泛型可以简写成ArrayList<String> list = new ArrayList<>();
  • 泛型类/泛型接口

  1. 一般用T,E,K,V,N,R表示,?表示通配符/占位符,约定与习惯吧。当然啊,用什么表示都可以,只要符合java规范即可。
    1. E - Element (在集合中使用,因为集合中存放的是元素) ,枚举Enum
    2. T - Type(Java 类)
    3. K - Key(键)
    4. V - Value(值)
    5. N - Number(数值类型)
  2. 下面示例中,在类(接口)名后紧跟泛型声明(例如:<T>和<T1,T2,R>),代表此类(接口)中拥有的泛型数量,也就是说当前类(泛型)可以同时使用多少种数据类型。
  3. 如果类(接口)中出现相同泛型声明的属性、方法参数、方法返回值,则表示它们是同一类型。

 

  •  泛型方法

  1. 泛型类(接口)已经声明的泛型在泛型方法中可以直接使用,没有声明的需要在方法上单独声明。
  2. 已经在类(接口)中声明的不可再方法上重复声明,数据域问题。
  3. 下面示例中用到了泛型参数和泛型返回值。

  •  泛型属性

  1. 类属性要使用泛型,需要在类(接口)提前声明。
  2. 方法属性要使用泛型,需要在方法提前声明。
  3. 下面示例中GenericClazz类给的泛型为Demo,当然可以是任何类型,这里使用了引用类做示范。

  •  泛型约束

  1. 下面视图存在两个引用数据类型Demo2和GenericClazz,Demo2继承了GenericClazz。
  2. ? 表示占位符/通配符,表示当前类型。
  3. ArrayList<? extends GenericClazz>:声明上界,表示参数化的类型可能是所指定的 GenericClazz 类型,或者是此类型的任意子类型。
  4. ArrayList<? super Demo2>:声明下界,表示参数化的类型可能是所指定的 Demo2 类型,或者是此类型的任意父类型。
  5. ? extends/ ? super 会导致泛型协变性,示例中红色报错点均为extends泛型协变性导致
    1. extends:对象可读、不可写。
    2. super :对象可读、可写。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/825316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商城免费搭建之java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c bbc

&#xfeff; 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、R…

面试之HashMap

1.什么是集合框架Java的集合主要有两个根接口Collection和Map派生出来的,Collection派生出来了三个子接口:List,Queue,Set。因此Java集合大致可分为List,Queue,Set,Map四种体系结构。2.HashMap与TreeMapHashMap是直接实现Map接口,而TreeMap是实现SortedMap接口的,所以两个还…

RISC-V - 小记

文章目录 关于 RISC-V安装 关于 RISC-V RISC : Reduced Instruction Set Computing RISC-V(“RISC five”)的目标是成为一个通用的指令集架构(ISA) 官网&#xff1a;https://riscv.orggithub : https://github.com/riscv 教程 [完结] 循序渐进&#xff0c;学习开发一个RISC-…

如何与 Dillard‘s 建立 EDI 连接?

Dillards 是主营时装、化妆品和家居用品的零售商&#xff0c;为顾客提供高质量的商品和优质的购物体验。2022年&#xff0c;Dillards 公司位列当年《财富》美国 500 强排行榜第 488 名。本文将为大家介绍 Dillards 的 EDI 需求&#xff0c;了解如何快速对接 Dillards EDI。 Dil…

Stable Diffusion - Stable Diffusion WebUI 支持 SDXL 1.0 模型的环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132056980 SDXL v1.0 版本 是 Stable Diffusion 的最新版本&#xff0c;是基于潜在扩散模型的文本到图像生成技术&#xff0c;能够根据输入的任何…

瀑布流布局columns

瀑布流布局其核心是基于一个网格的布局&#xff0c;而且每行包含的项目列表高度是随机的&#xff08;随着自己内容动态变化高度&#xff09;&#xff0c;同时每个项目列表呈堆栈形式排列&#xff0c;最为关键的是&#xff0c;堆栈之间彼此之间没有多余的间距差存大。还是上张图…

sass的模块化,@import的编译时和运行时详解

sass如同css一样 可以模块化。 css中通过import来实现模块化&#xff0c; 但是两者有些不同&#xff0c;css是会参与到运行时的&#xff0c;也就是说运行的过程中有多个css文件&#xff0c;通过import指令导入进来。但是sass并不是个运行时态&#xff0c;sass是一个编译时态。…

六、JVM-垃圾收集器浅析

垃圾收集器浅析 主 JVM参数 3.1.1 标准参数 -version -help -server -cp3.1.2 -X参数 非标准参数&#xff0c;也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式&#xff0c;JVM自己来决定3.1.3 -XX参数 使用得…

图片怎么压缩大小?值得一看的图片压缩方法

图片是我们生活和工作中必不可少的文件&#xff0c;为了能够有效保存、发送&#xff0c;我们需要适当压缩其大小&#xff0c;但很多朋友不知道怎么压缩图片&#xff0c;或者压缩后造成了图片清晰度受损&#xff0c;怎么才能既压缩图片的大小&#xff0c;又能避免清晰度受到影响…

为什么选择Docusaurus构建API文档?

在现代化软件开发中&#xff0c;文档对于软件成功的重要性不言而喻。然而&#xff0c;管理和维护文档站点往往会给开发者带来额外的负担。为了帮助开发人员快速构建易于管理和维护的文档站点&#xff0c;Docusaurus应运而生。本文将深入探讨为什么选择Docusaurus构建您的文档站…

Activiity跳转startActivity源码分析Activity启动流程(下)

调用ActivityThread子类ClientTranslationHandler的scheduleTranslation 注意上图有个sendMessage的 接着会执行translacationExecutor的execute方法。 都会走cycleToPath方法 cycleToPath方法对应的performLifecycleSequence 调用Actvitiy各个生命周期。 然后是第二种情况&am…

效率提升丨大学必看校园安全实用技巧

在当今社会&#xff0c;教育是培养人才、传承文明的重要场所。然而&#xff0c;教学楼作为学生、教师和员工活动的核心区域&#xff0c;也存在着潜在的安全隐患&#xff0c;其中最为突出的风险之一是火灾。火灾不仅危及生命财产&#xff0c;还可能给整个学校带来不可估量的损失…

五个BLOCK问题

block的原理是怎样的&#xff1f;本质是什么&#xff1f; 一个含有自动变量的匿名函数 Block 的本质是一个封装了函数及其调用环境的 Objective-C 对象 一个 block 实际是一个对象&#xff0c;它主要由一个 isa 和 一个 impl 和 一个 descriptor 组成。 是封装了函数代码以…

华为OD面试总结和建议:全程线上面试的经验分享

目录 导语一、准备工作&#xff1a;二、面试前&#xff1a;三、面试过程&#xff1a;1. 视频面试技巧&#xff1a;2. 技术问题准备&#xff1a; 四、面试后&#xff1a;结束语 导语 导语&#xff1a;随着技术的发展&#xff0c;线上面试在招聘过程中扮演着越来越重要的角色。作…

11万多英藏对照词典英藏翻译ACCESS\EXCEL数据库

今天继续发一个藏文藏语相关的翻译数据库&#xff0c;即英藏对照词典&#xff0c;加上《5万6千多藏文词典解释ACCESS数据库》以及昨天发的《近13万汉藏对照词典汉藏翻译ACCESS\EXCEL数据库》藏文类的数据就算较全了。 截图下方有显示“共有记录数”&#xff0c;截图包含了表的所…

js方法:toLocaleString()

js中的toLocaleString()方法用于将数字转换为本地化的字符串表示形式。 语法&#xff1a; number.toLocaleString([locales [, options]]) locales&#xff08;可选&#xff09;&#xff1a;一个字符串、字符串数组&#xff0c;表示要使用的语言或一组语言。例如&#xff0c;&…

拍立淘是如何实现的?

淘宝拍立淘功能是很多网购的网民经常会用到的一个功能。拍立淘的图片搜索商品列表接口功能是指用户可以通过上传一张商品图片&#xff0c;拍立淘会根据该图片进行识别和匹配&#xff0c;以找到与该图片相似或相同的商品&#xff0c;并将搜索到的商品列表返回给用户。以下是该接…

《深度探索c++对象模型》第五章笔记

非原创&#xff0c;在学习 5 构造、解构、拷贝语意学Semantics of Construction,Destruction, and Copy 考虑下面这个abstract base class声明: class Abstract_base { public:virtual ~Abstract_base() 0;virtual void interface() const 0;virtual const char*mumble() c…

Robot Framweork之UI自动化测试---分层设计

Robot Framework 的分层思想是一种测试设计和代码组织的模式&#xff0c;它将测试用例的实现和测试执行逻辑分离&#xff0c;以提高测试的可维护性、可读性和可扩展性。 一、分层思想 在实际项目中&#xff0c;一般分为三层&#xff1a;元素层&#xff0c;流程层&#xff0c;用…

异步消息传递技术 JMS AMQP MQTT

广泛使用的三种异步消息传递技术&#xff1a;JMS AMQP MQTT JMS AMQP MQTT JMS&#xff08;Java Message Service)&#xff1a;一个类似JDBC的规范&#xff0c;提供了与消息服务相关的API接口 JMS消息模型&#xff1a; P2P 点对点模型&#xff1a;消息发到一个队…