泛型的使用1

  1. 泛型只在編譯期間有效,並且在編譯期間會驗證傳入的值是否爲泛型類型的值,如果不是對應泛型的值,將會報錯:在這裏插入圖片描述
    圖1 在這裏插入圖片描述
    圖2
    此時的構造函數的值應該是泛型的類型的值,也就是String類型的值,否則會報錯。
    2.如下圖說明了,泛型在編譯成class文件會被擦除,也就是運行的是同一個Class文件,此處和JVM的類加載相關。不贅述在這裏插入圖片描述
    圖3
    3.如果沒有傳入對應的泛型,則是Object類型,因爲Object能兼容所有類型,所以可以傳入任何參數,如下圖
    在這裏插入圖片描述
    圖4
    4.當接口有泛型時
    在這裏插入圖片描述

    如果其子類沒有泛型,實現的接口也不能用泛型,此時默認是Object類型
    在這裏插入圖片描述
    還有一種情況是子類有泛型,而父類沒有泛型,此時實現的接口還是Object類型在這裏插入圖片描述
    最後一種情況是,子類有指定泛型,父類也有指定泛型
    在這裏插入圖片描述
    那麼對應的方法就是T類型,實現父類的方法。
    還有一種情況:
    直接在實現父類的方法指定其泛型,如果實現方法有用到父類的泛型,那麼就使用指定的泛型
    在這裏插入圖片描述

總結第4點:當父類沒有泛型的時候,默認繼承IGeneric類,父類的泛型默認變成Object,所以不管子類是否有泛型,實現的方法如果帶有父類的泛型都是Object

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