黑马程序员技术交流社区
标题:
关于反射的问题??
[打印本页]
作者:
虎牛龙马
时间:
2014-4-22 09:54
标题:
关于反射的问题??
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才对啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2