大家好,我是向同学,从今天继续每日一题,旨在为提高大家的基础知识。
话说干了这么多年的开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一个犹抱琵琶半遮面的女子,总让人看不透,看不腻?应该就是基础不扎实了
。
点击下面链接查看每日一题20201004:
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泛型擦除引起的问题。
在编译后所有的泛型类型都会做相应的转化,转换规则如下:
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两处的作用是否一样?(问题分析将在下一期每日一题公布)大家也可以在留言区留言!!!