ParameterizedType
就是參數化類型的意思。
解釋:
聲明類型中帶有「」的都是參數化類型,例如List<integer></integer>
,Map<string></string>
。
getActualTypeArguments()
傳回Type[],即「」裡的參數,例如Map<string></string>
。
getRawType()
回傳Tpye,得到「」前面的類型,例如List<string></string>
。
getOwnerType()
回傳Type,O在類型變數呼叫時會回傳OMap.Entry<long> </long>
。
免費教學影片分享:java課程
範例程式碼:
import org.junit.Test; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.Map; public class ReflectDemo { private static Map<String, BigDecimal>map; @Test public void test(){ try { Class<?> aClass = Class.forName("com.test.annotation.param.ReflectDemo"); //获取map属性对象 Field field = aClass.getDeclaredField("map"); //获取map属性的类型 Type type = field.getGenericType();//返回属性声明的Type类型 if (type instanceof ParameterizedType) { //强转为ParameterizedType对象 ParameterizedType parameterizedType = (ParameterizedType) type; //获取原始类型 Type rawType = parameterizedType.getRawType(); System.out.println("map的原始类型为:"+rawType); //获取map的类型的所有泛型信息 Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); for(int i=0;i<actualTypeArguments.length;i++){ System.out.println("Map类型的第"+(i+1)+"个泛型为:"+actualTypeArguments[i]); } } } catch (Exception e) { e.printStackTrace(); } } }
執行結果:
#java相關文章教學推薦:java入門教學
以上是在java中如何使用反射來獲取泛型訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!