Java編程思想—第十四章

1、newInstance()獲取對象的時候必須有無參的構造方法,只寫有參不行,或者都不寫。

2、使用  類名.class  獲取類對象的時候,不會進行初始化操作(調用“編譯期變量時候”不會初始化),當調用“非編譯期變量”時(即需要運算才能知道值)會進行類初始化,即運行靜態塊。

而調用 Class.forName("") 獲取對象時會進行初始化。

3、如果一個static域不是final的,那麼在對它進行訪問時,總是要求在他讀取之前,要先進行鏈接(爲這個域分配存儲空間)和初始化(初始化該存儲空間)。

4、在泛型代碼內部,無法獲得任何有關泛型參數類型的信息,即比較兩個泛型參數類型,無法實現(爲true)

5、無法創建泛型數組,雖然編譯不會出錯 ,但運行會報錯。

class A<T> {}
public class B{
    static A<Integer>[] arr;
}

6、向上轉型問題

class A{}
class B extends A{}
class C extends A{}
public class Test {
    public static void main(String[] args) {

        A[] arr = new B[2];
        arr[0] = new A();//運行錯誤
        arr[1] = new B();//正確        

        //List<A> arr1 = new ArrayList<B>();//編譯錯誤

        List<? extends A> arr2 = new ArrayList<B>();
        //arr2.add(new B());//編譯錯誤
        //arr2.add(new A());//編譯錯誤
    }
}

 

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