JAVA編程思想中的一些疑問, 本人觀點,歡迎留言指正

這是看java編程思想的疑問:

看java編程思想有個疑問1:

Java中普通內部類爲何不能有static數據和static字段,也不能包含嵌套類

在百度後摘錄總結一下,希望啓迪跟我有同樣困惑的人同時也可能我是錯誤的,希望得到指正:
“普通內部類的字段與方法,只能放在類的外部層次上,所以普通的內部類不能有static數據和static字段,也不能包含嵌套類。但是嵌套類可以包含所有這些東西。”(201頁原文)

Fields and methods in ordinary inner classes can only be at the outer level of a class, so ordinary inner classes cannot have static data, static fields, or nested classes. However, nested classes can have all of these. (201頁英語原文)

我認爲:only be at the outer level of a class這句話翻譯應該是:

只能是類的外部類級別;

設想一下,內部類如果有靜態字段、靜態方法、靜態類,相當於直接定義在外部類的靜態字段、靜態方法、靜態類;使用它們跟使用普通類含有靜態內容是一樣的,是外部類點靜態字段、點靜態方法、點靜態類這樣的方法調用。但是我們都知道普通內部類的實例化前提是首先實例外部類,外部類都實例化了,再調用靜態內容,這是java不提倡的,就跟平時的編程的警告似的,可能是這個原因就直接不讓有靜態內容了;

好了都是我猜的,希望即使不能充分證明,也能間接記住這個知識點;

看java編程思想有個疑問2:

創建內部類對象的時刻並不依賴於外圍類對象的創建

特意找到英文版本:

The point of creation of the inner-class object is not tied to the creation of the outer-class object.
翻譯:內部類對象的創建點並不與外部類對象的創建相關聯。

解析:是不是說創建外部類不會同步創建內部類,而是你可以很自由,在任意你想真正調用的時刻使用;

看java編程思想有個疑問3:

page 363;關於泛型方法侷限的例子代碼:
public class LimitsOfInference{
static void f(Map<Person,List<? extends Pet>> petPeople){}
public static void main (String[] args){
//f(New.map());//Does not complie
}
}
原文:【作爲參數,傳遞給另一個方法,這是編譯器並不會執行類型推斷。在這種情況下,編譯器認爲i:調用泛型方法後,其返回值被賦給一個Objcet類型變量】
但是我用jdk1.8可以編譯,而且能顯示出類型,如圖
不知道怎麼回事
這是因爲jdk高,版本優化了,先記錄下來,以後慢慢看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章