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

泛型擦除是什么意思_泛型类和泛型方法的区别在严格的泛型代码里,带泛型声明的类总应该带着类型参数。但为了与老的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • bzero memset_memset是什么函数

    bzero memset_memset是什么函数 bzero函数函数原型:voidbzero(void*s,intn);头文件:#include&lt;string.h&gt;功能:将字符串s的前n个字节置为0,一般来说n通常取sizeof(s),将整块空间清零。返回值:无返回值例子:将一个数组清零:charstr[10];bzero(str,…

    2022年10月13日
    0
  • SQL IF语句的使用

    SQL IF语句的使用备忘笔记侵删转载https://www.cnblogs.com/xuhaojun/p/9141396.htmlSQL的IF语句MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<>0andexpr1<>NULL),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或字符串值,具体情

    2022年7月16日
    25
  • minhash算法_小k

    minhash算法_小k对于web网页去重的应用,如抄袭、镜像等,通过将网页表示为字符k-grams(或者k-shingles)的集合,把网页去重的问题转化为找到这些集合的交集。使用传统的方法存储这些巨大的集合以及计算它们之间的相似性显然是不够的,为此,对集合按某种方式进行压缩,利用压缩后的集合推断原来集合的相似性。 Jaccard相似性:只关注集合之间的交集大小。集合S和T的Jaccard相似性定义如下:

    2025年6月23日
    0
  • fopen函数打开文件失败原因_为什么打开文件失败

    fopen函数打开文件失败原因_为什么打开文件失败大家好,我是疯狂的比特,一个每天在互联网上种菜和砍柴的程序员今天给大家分享一个C语言初学者常见的一个问题。问题经常有人问我,我的C语言代码好好的,怎么就打开文件失败了呢?我们先来看看代码吧#include<stdio.h>#include<stdlib.h>intmain(){ FILE*pfRead=fopen(“test.txt”,”r”); if(pfRead==NULL) { printf(“打开文件test.txt失败啦\

    2022年10月14日
    0
  • ArcGIS二次开发基础教程(10):三维分析

    ArcGIS二次开发基础教程(10):三维分析ArcGIS二次开发基础教程(10):三维分析坡度分析请务必学会使用帮助文档!!!//DEM数据的坡度分析将分析结果添加到地图上//首先获取DEM数据,方法有很多例如从个人地理数据库获取,也可直接获取文件数据,此处采用第二种方法IWorkspaceFactoryworkspaceFactory=newShapefileWorkspaceFactoryClass();//从文件…

    2022年7月23日
    5
  • role &#39;PLUSTRACE&#39; does not exist

    role &#39;PLUSTRACE&#39; does not exist

    2022年1月10日
    37

发表回复

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

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