第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JAVA8 獲取泛型類型問題

JAVA8 獲取泛型類型問題

回首憶惘然 2019-05-09 22:19:19
請教一個關(guān)于泛型的問題:有如下帶泛型的接口publicinterfaceAAA{}publicinterfaceBBBextendsAAA{}publicinterfaceCCCextendsBBB{}publicclassDDDimplementsCCC{}我想獲取任意繼承了AAA接口或?qū)崿F(xiàn)了AAA接口的類型,對應(yīng)AAA泛型參數(shù)中C,M,S分別對應(yīng)什么實際類型。例如:DDD中,C=Integer,M=String,S=BooleanBBB中,C=,M=String,S=Boolean有時這個類型是用在字段的前面,同時距離AAA有好幾層繼承關(guān)系,有沒有什么好辦法,可以方便地獲知,最終的類型對應(yīng)AAA的參數(shù)C,M,S分別是什么?
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻1807條經(jīng)驗 獲得超9個贊

最開始的版本忘記了接口的情況…
publicclassEEE{
publicstaticvoidmain(String[]args){
Listtypes=newArrayList<>();
findAllTypes(DDD.class,types);
System.out.println(types);
}
privatestaticvoidfindAllTypes(Classclazz,Listtypes){
TypegenericSuperclass=clazz.getGenericSuperclass();
if(genericSuperclassinstanceofParameterizedType){
Collections.addAll(types,((ParameterizedType)genericSuperclass).getActualTypeArguments());
}
Type[]genericInterfaces=clazz.getGenericInterfaces();
for(finalTypegenericInterface:genericInterfaces){
if(genericInterfaceinstanceofParameterizedType){
Collections.addAll(types,((ParameterizedType)genericInterface).getActualTypeArguments());
}
}
Classsuperclass=clazz.getSuperclass();
if(superclass!=null){
findAllTypes(superclass,types);
}
for(finalClassanInterface:clazz.getInterfaces()){
findAllTypes(anInterface,types);
}
}
}
                            
查看完整回答
反對 回復(fù) 2019-05-09
?
qq_花開花謝_0

TA貢獻1835條經(jīng)驗 獲得超7個贊

除借助IDE的提示,我也不知道還有什么好辦法,因為很多泛型只有在實例化時才能轉(zhuǎn)為具體的類型.如果你只是在寫低層架構(gòu)的話,甚至可能不會與具體類弄打交道,一直都是在寫抽象類型也是可能的.
                            
查看完整回答
反對 回復(fù) 2019-05-09
  • 2 回答
  • 0 關(guān)注
  • 990 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號