- public class GetGenericDemo {
- Map<Integer,String> map = new HashMap<Integer,String>();
- /**
- * @param args
- * @throws Exception
- * @throws SecurityException
- */
- public static void main(String[] args) throws SecurityException, Exception {
-
- Class<GetGenericDemo> c = GetGenericDemo.class;
- Field field = c.getDeclaredField("map");
- System.out.println(field);
- System.out.println(field.getName());
- Class<?> c1 = field.getType();
- java.util.Map
- System.out.println(c1);
-
- /**
- * Type getGenericType() 返回一个Type 对象,它表示此Field 对象
- 所表示字段的声明类型。
- * Type是Class的接口;
- */
- Type type = field.getGenericType();//包含泛型的类型
- //java.util.Map<java.lang.String, java.lang.Integer>
- System.out.println(type);
- ParameterizedType ptype = (ParameterizedType)type;
- Type[] types = ptype.getActualTypeArguments();
- for(Type t: types) {
- System.out.println(t);
- }
-
- /**
- * Type[] getActualTypeArguments()
- 返回表示此类型实际类型参数的Type对象的数组。
- Type getOwnerType()
- 返回Type 对象,表示此类型是其成员之一的类型。
- Type getRawType()
- 返回Type 对象,表示声明此类型的类或接口。
- */
- <font color="red"> Type t1 = ptype.getOwnerType();</font>
- Type t2 = ptype.getRawType();
-
- System.out.println(t1);
- System.out.println(t2);
- }
- }
复制代码 标红部分代码输出为null?但是此方法的解释是:返回Type 对象,表示此类型是其成员之一的类型。 照解释:输出应该是Ingeger或String才对啊!
|