對(duì)C++一知半截,對(duì)Java也是,但是希望通過(guò)不斷的學(xué)習(xí)不斷的對(duì)比,對(duì)這兩個(gè)語(yǔ)言都有深入的了解:
1、例如Java中的final變量,變量值是一個(gè)Object(或者是一個(gè)數(shù)組),然而這個(gè)Object的方法可以修改此Object中的instance variable(或者數(shù)組中的值改變),讀到這里我想到:C++中的常量指針不也是如此嗎?常量指針指向的變量不可以改變,但是常量指針指向的變量的地址所存的值是可以改變的。
2、(等到再發(fā)現(xiàn)的時(shí)候再添上吧,如果有哪位仁兄愿意,希望能夠出出力,添上些,咱們一同進(jìn)步!)
http://www.infoq.com/cn/articles/cf-java-generics
讀這篇文章最深的印象是:Java泛型擦除是在編譯時(shí)刻進(jìn)行的,所以JVM看到的只是List,而不會(huì)看到List<String>之類,并且有List.Class而沒(méi)有List<String>.Class。想要知道更多東西,請(qǐng)看這篇文章。
最近看Java Language specification,看到第四章,感覺(jué)有很多東西自己以前都不曾注意,所以建議學(xué)Java的同學(xué)都看看,真的是查漏補(bǔ)缺。
下面說(shuō)說(shuō)Raw Type:
public TClass<E>{
public List<String> getString(){
return null;
}
public static void main(String args[]){
TClass tc = TClass();
List<TClass> list = tc.getString(); //1
}
}
1處就很奇怪了,為什么getString命名返回的是List<String>而將其賦值給List<TClass>類型都可以呢?這就是編譯器對(duì)Raw type進(jìn)行了處理,編譯器將Raw type進(jìn)行擦除,就是將其參數(shù)類型中的參數(shù)全部去掉,例如List<String>將擦除成List,所以tc.getString()返回的是List而不是List<String>。
以后就在這片土地記錄java學(xué)習(xí)的點(diǎn)點(diǎn)滴滴了