首页 > 其他分享 >简单说一下泛型

简单说一下泛型

时间:2022-08-16 17:15:57浏览次数:56  
标签:编译 逆变 一下 简单 list 类型 协变 泛型


Java泛型不变性

 

 

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

协变

 

 

观察上述sum方法,如果形参为List<Number> list那么Double类型的List无法调用该方法,但是如果我们在list类型中添加了<? extends Number>就可以成功调用了,这就是泛型的协变,但是泛型协变的问题就是我们无法在list集合中添加元素,原因也很简单因为JVM无法保证传入参数为float类型。

泛型协变失去了传递泛型对象的能力

逆变

 

 

逆变放宽的是对父类型的约束,使得父类型的泛型对象可以进行赋值,但是失去了获取该泛型的能力

一句话来讲一下,泛型协变和逆变都放松了对于方法参数的约束,不同点在于,协变放宽的是对子类型的约束,逆变放宽的是对父类型的约束,同时协变失去的是传递泛型对象的能力而逆变失去的是获取该泛型对象的能力

泛型擦除

泛型信息只存在于代码编译阶段,但是在java的运行期(已经生成字节码文件后)与泛型相关的信息会被擦除掉

 

 

在jdk1.5之前是没有泛型的,为了兼容低版本所以采用泛型擦除的方式使得低版本编译的代码同样可以运行在高版本jvm上。 对于泛型,javac编译器会记录泛型信息。jvm可以通过反射来在运行时获取泛型信息。正因为jdk1.5之前也不存在反射,所以这也是自洽的

标签:编译,逆变,一下,简单,list,类型,协变,泛型
From: https://www.cnblogs.com/ccywmbc/p/16592186.html

相关文章

  • github 代码简单讲解
     github地址:https://github.com/lijiesheng/rabbitmq/tree/simplesimple模式分支1:simple-data-lose没有引入应答机制,只要消费者关闭,队列中的数据就......
  • git stash 简单用法
    做项目时,自己本地内容开发还没完成(还没有提交比本地,没有commit),又接到新的紧急bug修复可以用gitstash保存自己修改的内容修复bug提交线上再用gitstashpop还原本地......
  • Python - PyMuPDF模块的简单使用
    1.简介能够用来对PDF文档进行操作的Python包有好几个,如用于提取内容的PdfPlumber、PDFMiner,可以用来对PDF文件进行修改操作的PyPDF2等等,如果只是需要简单地对PDF文件实现......
  • vue简单实现一个table组件
    看到elementUI封装的el-table组件觉得很有意思,就自己简单实现了自己的一个table组件,具体功能有 columns:表头 data:数据 border:是否有边框 zebra:是否有斑马纹 ......
  • 【CSS】实现简单易上手的'手风琴效果'
    【CSS】实现简单易上手的'手风琴效果'点击打开视频讲解<template><divid="app"><divclass="shell"><divclass="box"><imgsrc="./assets/img......
  • 一个非常简单用.NET操作RabbitMQ的方法
    RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,RabbitMQ支持的语言更多、功能更完善。 本文提供一种市面上最/极简单的使用RabbitMQ的方式(支持.N......
  • quartzJob简单使用(自用,很简洁)
    配置文件spring:datasource:driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://${MYSQL_HOST:10.10.102.90}:${MYSQL_PORT:3306}/online_test_s......
  • 项目简单的开发流程
    1.需求分析架构师+产品经理+开发组组长在和客服谈需求时,先了解一下客户的需求,然后设计构建一套自己比较好写的方案,在和客户谈需求的时候引导客户往我们之前写好的方案......
  • 记录一下:成功获取拼夕夕数据。
    以前使用某宝,某猫,某狗,某东,现在自己不怎么用了,但家人用得多的还是某多多。但个人感觉某多多上面数据太多,不太好比较,也不太好去更劣取少劣。所以一直想开发一款自动获取某多......
  • js实现简单的产品搜索功能
      实现产品搜索功能的表格                div和tbody部分:                    js......