(反射):获取一个类的父类和父类的泛型
生活随笔
收集整理的這篇文章主要介紹了
(反射):获取一个类的父类和父类的泛型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、解決問題
- 獲取一個類的父類和父類的泛型
?
二、實現(xiàn)
- Student.java
- Genericity.java
- (1) ParameterizedType
- getClass().getGenericSuperclass()
返回表示此 Class 所表示的實體(類、接口、基本類型或 void)的直接超類的 Type,然后將其轉(zhuǎn)換ParameterizedType。 - getActualTypeArguments()
返回表示此類型實際類型參數(shù)的 Type 對象的數(shù)組。[0]就是這個數(shù)組中第一個了。簡而言之就是獲得超類的泛型參數(shù)的實際類型 - Type和ParameterizedType可以理解為:? 由一個類可以得到這個類的Type類型,比如一個類:Class Test extends Person<Student> Test這個類可以通過getClass().getGenericSuperclass()這個方法得到超類Person的Type,這個Type為:“Person所在的包.Person<Student所在的包.Student>”? ,而ParameterizedType.getActualTypeArguments則得到Person<Student>中的泛型類型(即Student)并返回Typ[]。
- getClass().getGenericSuperclass()
?
- (2)在繼承關(guān)系中,不管父類還是子類,這些類里面的this都代表了最終new出來的那個類的實例對象,在子類GenericityTest(繼承于Genericity)中只是實例化了GenericityTest這個子類,而GenericityTest的構(gòu)造方法中默認(rèn)會默認(rèn)調(diào)用父類Genericity的構(gòu)造方法,而在父類Genericity的構(gòu)造方法中存在this.getClass(),此時this.getClass()得到的Class為子類GenericityTest(因為GenericityTest有被new實例化,而父類的構(gòu)造方法雖然被調(diào)用,但是調(diào)用構(gòu)造方法并不是實例化對象)
?
- ?GenericityTest.java
結(jié)果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/shyroke/p/7284067.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的(反射):获取一个类的父类和父类的泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【高并发解决方案】6、数据库水平切分的实
- 下一篇: 光伏业务爆发 同景新能源与信义光能签署1