范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

什么是类型擦除?

  泛型在很多编程语言中都存在,而Java中的实现方式最为独特,Java的泛型只存在于源码阶段,在编译期会被擦除。具体来说,Java编译器会将类型参数替换为其上界(upper bound,在Java中即类型参数中extends子句的类型),如果上界没有定义,则默认为Object。为了实现泛型做了什么?隐式转换
  为了保证类型安全,会插入显式类型转换,示例如下:// 编译前 List books = getBooks();   for (Book obj : books) {     book.type(); }   // 编译后 List books = getBooks();   for (Object obj : books) {     // 类型转换,编译期自动生成的     Book book = (Book) obj;      book.type(); }桥接方法
  为了保证 多态性,会生成桥接方法,示例如下: // 源代码 public class People {       void set(T t) {     } }  public class Man extends People {      @Override     void set(String str) {         // do something     } }  // 编译后 public class Man extends People{          void set(String str) {         // do something     }      	// 桥接方法,编译期自动生成的     void set(Object str) {         set((String)str);     } }为什么要引入泛型?
  Java在jdk5引入泛型其中一方面是为了解决集合遍历时候总是需要手动强制类型转换的问题,如下面代码一样:List books = getBooks();   for (Object obj : books) {     // 所以这里总是需要强转     Book book = (Book) obj;      book.type(); }
  但泛型的引入又导致jvm不能向下兼容,由此而搞了个类型擦除,但是类型擦除又引入了一系列的问题,我们接着看。类型擦除带来的恶果
  类型擦除带来了一系列的不良后果,这也间接导致了后续Java版本用更多的实现代码来弥补这些不良后果。反射困境
  由于泛型信息在编译时被擦除,因此在运行时,无法获取泛型信息。这使得开发者无法在运行时获得泛型类型,这对于一些需要动态获取泛型信息的框架和工具来说是一个很大的问题。相关框架为了能够获取到泛型类型信息,这些框架和工具都是通过反射和其他机制来实现动态获取泛型信息的。例如:Fastjson:阿里巴巴开发的 JSON 库,提供了 TypeReference 类,可以动态获取泛型信息,Jackson与Gson也有类似实现。Java 8 TypeTools:提供了 GenericTypeReflector 类,可以动态获取泛型信息。Spring Framework:Spring 提供了 ParameterizedTypeReference 类,可以动态获取泛型信息。类型数量爆炸
  熟悉Java的同学有没有很奇怪一件事,Java 8 内置的 函数式接口为什么会有 Supplier、Function 和 BiFunction 之分?为什么不是Function、Function、Function呢?因为 Java没法用泛型的个数来区分类型,从而导致需要定义更多的类型来区分,还美其名曰为了增加可读性。 对基本类型不友好
  泛型不支持基本类型,由于运行时泛型会被擦除,导致运行时无法计算泛型类型所需要的内存大小,为了解决这个问题,Java设计者们又想了个歪主意,泛型只能使用引用类型,因为不管什么类型的引用占的内存大小都是一样的,但是基本类型大小不一。
  但是通过规范解决了这个问题,又引入了新的问题,我们要向一个集合中添加基本类型怎么办?谜之操作来了, 定义所有基础类型的包装类型 (int与Integer、long与Long等等),这又引入了一大堆新的实现和概念,例如自动装箱拆箱。忍不住多吐槽一下,自动拆箱引起的npe让代码写起来非常丑陋和冗余,如下: Integer type = remoteService.getBookType(); // 这里不判空,自动拆箱可能就npe了 if(type != null && type == 1){     // do something }
  为了让函数式接口能够支持基本类型,例如Function,如果你要返回int,则你需要IntFunction,那是不是还有DoubleFunction、LongFunction、DoubleToLongFunction、LongToIntFunction等等,如你多料,java.util.function下还有几十个类似的函数式接口,然而这还不是全部基本类型,很多基本类型还需要自己实现。
  各种各样的函数式接口
  总之,Java设计师们一味的向下兼容,导致了Java的泛型就像是一个怪胎,完全是为了拥有而拥有,C++与C#的实现方案完全优于它,恨铁不成钢啊,当然作为一个javaer,我仍然希望Java能够长足发展,期待未来的改变。
  我是搬长,如果文章给你带来了收获,请关注 + 点赞 ,你的支持是我最大的动力!

苏州该如何发展?苏州的等级低,或者说苏州的地位在下降?我认为这是一个伪命题。很多人对苏州有误解,要么觉得苏州很牛逼,天生就应该是江南的老大,要么有恐惧症,觉得苏州的gdp下降了,苏州就会倒。我觉得爱打麻将有哪些潜在危害?如何戒掉打麻将的瘾?对于打麻将这个问题,个人觉得有三点危害一,对社会秩序的危害,首先,占有赌博性质的麻将参与者都抱有异想天开的心态,总想在短时间内赚取到比打工甚至当老板更多的钱,但是打麻将的大部分人都家庭装修工地安装摄像头是否真的实用?安装摄像头当然是真的实用的呀。我从三个角度来给你进行分析1业主业主哪怕不在工地,只要你手机有电有网络就能看到家里工地上的装修情况。虽然只是看得到装修到哪步,对于业主而言是有很必要的现在农村已经后继无人啦。怎么才能留住村里的年轻人呢?我们国家是农业大国,三农的发展是重中之重,目前,全国各地积极实施乡村振兴战略,实现乡村振兴,首先要做到农村人才的振兴,人才振兴的前提是让村里的年轻人才能够留下来,安心在农村发展。重既然液体不能上飞机,为什么飞机餐食可以提供水和饮料??2018年春运期间,一名24岁男子在武汉天河机场乘机,起飞10分钟后突发急性哮喘,险些丧命,机长只得返航,男子被送往医院治疗,这件事本该不会发生,原因就是因为这名男子随身携带的喷雾无锡公积金3600,属于顶级水平吗?无锡如果你单人交3600是不可能的,毕竟封顶在那里。如果你跟公司加一起3600可能性有的,不仅仅无锡,哪怕放眼全国,这已经很高标准。企业规定不一样,有的厂之按照最低工资缴纳,有的厂如果一个会计不去考职称证书,只是踏实工作,在工作中提升能力。会怎么样?目前我国事业单位编制工作人员的待遇是以职称挂钩的。一个会计不考职称证书,就晋升不了职称,只是靠踏实工作提升能力,最多评选为优秀或选进,奖金不过3至5百元,改变不了你的实际收入状况。女,44,已交26年社保,不想上班了,大家有什么建议?有26年的社保也不错了,不想上班就不上呗,如果有能力还是要缴费,办个灵活就业社保,4050补三年,然后退休我四十岁开始不上班了,在单位办理的内退,离开单位已经快十年了,很快的,弹指去农村赶集摆地摊,一个月有一万八千元的收入,你会放下面子去摆地摊吗?在农村集市上赶集摆摊,很没面子吗?不是的。相反,在我们那儿,倒是另外一种说法。都说那些赶集摆摊的人,是能人。说他们头午赶集挣了钱,下午回家再种田,滴水不漏过日子,劳苦持家不得闲。咱徐州洛阳襄阳长治等城市为什么可以成为副省级中心城市?副省级中心城市,一般都是城市的省会,副省级中心城市,一般都有经济和立法权限。这些地方交通都很发达,离省及中心城市比较近,也是重要的军事基地和交通枢纽城市。我认为其理由如下1国家中部六十多岁了存款十万,有退休金,请问这些钱够花的吗?我来回答!我马上奔六了,存款十万多点,退休金每个月剩余2千。够用了!正常情况下,不发生什么意外,身体健康不生大病,生活能自理,每月都有养老金,即便钱少些也够用的,更何况还有10万元
35岁后,生二胎和不生二胎的女性差距很明显,你别不相信35岁这个年纪很特别,从就业角度来看,很多公考招考的报名标准将年龄卡在35岁从医学角度来看,过了35岁怀孕的女性会被列为高龄产妇。随着三孩政策的发布,多子女家庭变得越来越普遍。不少女人有钱和没钱,装不来的01hr生活在这个世上,没有人能离得开钱。钱可以保证我们的衣食无忧,让我们居有定所,买喜欢的东西,做喜欢做的事情,过想要的生活。。虽然钱不是万能的,但是没有钱却是万万不能的。俗话说建议女人,多给老公做这5种菜,常吃精力充沛身体棒,浑身更有劲男人作为家中的顶梁柱,需要承担诸多的责任和义务,平时饮食应该多吃一些滋补的菜,跟上体力和脑力,作为老婆,建议大家多给自己的老公做这5种菜,平时多吃些,身体强壮有力气,喜欢的朋友,一产后身材焦虑,你该如何做?产后第一个名场面应该就是身材焦虑了吧!无论是素人还是明星都摆脱不了生娃后的身材焦虑,虽然看到有些明星生娃前后根本没差,但到自己身上的时候,仿佛这个肉用520胶水粘在了身上,怎么都掉人妖皇后宝儿17岁变成女人,让张家辉怀疑性取向,如今渴望当妈她是泰国最美人妖皇后,17岁忍痛成为女人,颜值身材就连女人都自愧不如,张家辉与她拍完吻戏后竟一度怀疑自己的性取向,宝儿的魅力有多大?宝儿男儿身女儿心宝儿出生在泰国普吉岛,父母都是普女人不想太早衰老,记住3少4多,滋养身体,做冻龄女神无论女性在哪个年龄,她们都希望自己看起来更年轻。如果他们看起来比同龄人年轻漂亮,她们会感到更自信。现在市场上也是为了满足女性的心理,所以推出了各种抗衰老护肤产品美容产品。衰老是每个六旬老太不自爱,一年住院六次,子女忍不了把她送到庙里去文疑史今察编辑疑史今察我死了也不要你们管!那我们就把你送到庙里面去!64岁老人刘玉芬和她的三个子女再次在村委会吵得不可开交,而这家人已经是村委会的常客。村委会也为此调解了十多次,可有一种痛叫激情戏背后的痛,看的人享受,演的人痛苦有人说拍戏中有3大点最难搞,哭戏吻戏床戏。不仅要有张力,还要画面唯美,同时还能推动剧情人物的心理变化。最好能给人直观冲击力,一眼就能肾上腺素飙升。当然,如果仅仅这样也算不上最难。更人间好时节丨夏至夏至,是夏季的第四个节气。夏至时,太阳直射北回归线,正午时分,北回归线及附近地区会出现立竿无影的奇景。夏至过后,太阳直射点开始从北回归线向南移动。清陈希龄恪遵宪度抄本中解释了夏至一孤星共和国要回来了?得州拒绝承认拜登总统,2023年启动独立公投近段时间以来,在物资紧缺和严重通胀的双重打击之下,美国人感受到了前所未有的压力。特朗普离开了一年多,当初以救世主姿态出现的拜登不但没能保障民众的衣食住行,甚至连民众的生命安全都保护战国七雄中,秦国有白起,赵国有廉颇,其他五国的名将都有谁?战国是一个群雄争霸的时代,也是乱世出英雄的时代。战国时期存在大大小小几十个诸侯国,但到了战国后期仅存7个实力强大的诸侯国,历史上称这七个国家为战国七雄。乱世之中战争是不可避免的,战