java每日一题20201006

♀尐吖头ヾ 提交于 2021-02-11 23:04:15
大家好,我是向同学,从今天继续每日一题, 旨在为提高大家的基础知识。 话说干了这么多年的开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一个犹抱琵琶半遮面的女子,总让人看不透,看不腻? 应该就是基础不扎实了

每日一题20201004答案:

点击下面链接查看每日一题20201004:

java每日一题20201104


method01的重载可以正常编译通过;method02不能正常编译。

编译时报错信息如下:

Method method02(List<Integer>) 
has the same erasure method02(List<E>) 
as another method in type Ques1103
意思就是method02(List<Integer>)方法在编译时擦除类型后的方法是method02(List<E>),与另一个方法重复了(即是方法签名重复),这就是java泛型擦除引起的问题。

在编译后所有的泛型类型都会做相应的转化,转换规则如下:
  1. List<String>、List<Integer>、List<T>擦除后的类型为List;


  2. List<String>[]擦除后的类型为List[];

  3. List<? extends E>、List<? super E>擦除后的类型为List<E>;

  4. List<T extends Serializable & Cloneable>擦除后为List<Serializable>;

Java编译后的字节码中没有泛型的任何信息,不管是Ques1103<String>还是Ques1103<Integer>引用的都是同一字节码。

今日问题:

public class Ques1104 {

    private String num;

    public void setNum(String num){
        num = num;  // 1
        this.num = num;  // 2
    }

    public String getNum(){
        return num;
    }
}


注释1和2两处的作用是否一样(问题分析将在下一期每日一题公布)大家也可以在留言区留言!!!


作者:小五

地址:http://m6z.cn/6kcniA
- END -
往期推荐:
java每日一题20201029
java每日一题20201101
java每日一题20201104


作者:BossXiang,可爱且懂得生活的研究生一枚(码农一枚)。

"一起学习、成长、温情的热爱生活。"

私人微信|zijietiaodongpro (字节跳动pro)

CSDN|知乎|github|掘金:五角钱的程序员 


关注福利

关注公众号,后台回复【电子书】

几百本常用技术类电子书籍


五角钱的程序员

希望这篇文章可以帮到你~
欢迎大家点个在看,分享至朋友圈


你我都成为光发热之人, 在看在看在看 ~(疯狂暗示!)


本文分享自微信公众号 - 五角钱的程序员(xianglin965)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!