泛型擦除是什么意思_泛型类和泛型方法的区别

泛型擦除是什么意思_泛型类和泛型方法的区别在严格的泛型代码里,带泛型声明的类总应该带着类型参数。但为了与老的Java代码保持一致,也允许在使用带泛型声明的类时不指定实际的类型。如果没有为这个泛型类指定实际的类型,此时被称作rawtype(原始类型),默认是声明该泛型形参时指定的第一个上限类型。当把一个具有泛型信息的对象赋给另一个没有泛型信息的变量时,所有在尖括号之间的类型信息都将被扔掉。比如一个List类型被转换为List,则该List对集合元素的类型检查变成了泛型参数的上限(即Object)。上述规则即为泛型擦除,可以通过下面代码进一步

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在严格的泛型代码里,带泛型声明的类总应该带着类型参数。但为了与老的Java代码保持一致,也允许在使用带泛型声明的类时不指定实际的类型。如果没有为这个泛型类指定实际的类型,此时被称作raw type(原始类型),默认是声明该泛型形参时指定的第一个上限类型。

当把一个具有泛型信息的对象赋给另一个没有泛型信息的变量时,所有在尖括号之间的类型信息都将被扔掉。比如一个 List 类型被转换为List,则该List对集合元素的类型检查变成了泛型参数的上限(即Object)。

上述规则即为泛型擦除,可以通过下面代码进一步理解泛型擦除:

List<String> list1 = ...;
List list2 = list1; // list2将元素当做Object处理

从逻辑上来看,List 是List的子类,如果直接把一个List对象赋给一个List对象应该引起编译错误,但实际上不会。对泛型而言,可以直接把一个List对象赋给一个 List 对象,编译器仅仅提示“未经检查的转换”

上述规则叫做泛型转换,可以通过下面代码进一步理解泛型转换:

List list1 = ...;
List<String> list2 = list1; // 编译时警告“未经检查的转换”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179206.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月30日 上午10:46
下一篇 2022年8月30日 上午10:46


相关推荐

  • 如何在Java中将String转换为int

    如何在Java中将String转换为int在本教程中 我们将看到将 Java 中的 String 转换为 int 或 Integer 的各种方法 您可以使用以下任何一种方式 使用 Integer parseInt string 使用 Integer valueof string 使用 ApacheCommon toInt string 使用 ApacheCommon

    2025年8月2日
    8
  • linux环境变量的配置_centos设置环境变量

    linux环境变量的配置_centos设置环境变量前言在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析&nbsp;环境变量配置文件|用户|配置文件||:|:||系统环境|/ect/profil

    2022年7月31日
    17
  • 马拉车算法Java_马拉车算法(Manacher’s Algorithm)

    马拉车算法Java_马拉车算法(Manacher’s Algorithm)这是悦乐书的第 343 次更新 第 367 篇原创 Manacher sAlgorithm 中文名叫马拉车算法 是一位名叫 Manacher 的人在 1975 年提出的一种算法 解决的问题是求最长回文子串 神奇之处在于将算法的时间复杂度精进到了 O N 下面我们来详细介绍下这个算法的思路 01 算法由来在求解最长回文子串的问题时 一般的思路是以当前字符为中心 向其左右两边扩展寻找回文 但是这种解法的时间复杂度是 O

    2026年3月18日
    0
  • 【Linux】ubuntu安装ssh服务端openssh-server

    【Linux】ubuntu安装ssh服务端openssh-serverLinux ubuntu 安装 ssh 服务端 openssh server1 背景 2 解决办法 3 测试 1 背景 ubuntu 安装后默认只有 ssh 客户端 只能去连其它 ssh 服务器 其它客户端想要连接这个 ubuntu 系统 需要安装部署 ssh 服务端 SecureShell SSH 是一种加密网络协议 用于在不安全的网络上安全地运行网络服务 利用 SSH 可以实现加密并安全地远程登录计算机系统 2 解决办法安装命令如下 sudoaptinsta server 详细安装日志 yus

    2026年3月20日
    2
  • kafka批量删除topic_kafka清空数据

    kafka批量删除topic_kafka清空数据一般情况下,是不会删除数据的。到达一定时间后,kafka会自动删除。如果一定要删除可以删除topic在重建topic了No.1:如果需要被删除topic此时正在被程序produce和consume,则这些生产和消费程序需要停止。因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafkadelete命令则无法删除该topi…

    2022年10月17日
    5
  • JMH 测试「建议收藏」

    JMH 测试「建议收藏」JHM测试框架

    2022年7月11日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号