ParameterizedType详解编程语言

   private static class ParameterizedTypeTest<T extends Number> { 
        private List<T> list = null; 
 
        public static void main(String[] args) throws NoSuchFieldException { 
            testTypeVariable(); 
        } 
 
        private Map.Entry<String, Integer> map = null; 
 
        private static void getGetActualTypeArguments() throws NoSuchFieldException { 
            Field fieldMap = ParameterizedTypeTest.class.getDeclaredField("map"); 
            ParameterizedType typeMap = (ParameterizedType) fieldMap.getGenericType(); 
            System.out.println(typeMap.getActualTypeArguments()[0]); 
            System.out.println(typeMap.getActualTypeArguments()[1]); 
            System.out.println(typeMap.getRawType()); 
            System.out.println(typeMap.getOwnerType()); 
        } 
 
        private List<String>[] t; 
 
        private static void testGenericArrayType() throws NoSuchFieldException { 
            Field fieldArray = ParameterizedTypeTest.class.getDeclaredField("t"); 
            GenericArrayType typeArray = (GenericArrayType) fieldArray.getGenericType(); 
            System.out.println(typeArray.getClass().getName()); 
            System.out.println(typeArray.getGenericComponentType()); 
        } 
 
        private List<T> t1; 
        private T t2; 
 
        private static void testTypeVariable() throws NoSuchFieldException { 
            Field field = ParameterizedTypeTest.class.getDeclaredField("t1"); 
            ParameterizedType type = (ParameterizedType) field.getGenericType(); 
            System.out.println(type.getActualTypeArguments()[0].getClass().getName()); 
 
            Field field2 = ParameterizedTypeTest.class.getDeclaredField("t2"); 
            TypeVariable type2 = (TypeVariable) field2.getGenericType(); 
            System.out.println(type2.getBounds()[0]); 
        } 
 
    }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20616.html

(0)
上一篇 2021年7月19日 23:35
下一篇 2021年7月19日 23:35

相关推荐

发表回复

登录后才能评论