早晨看到某位仁兄的帖子而开始思考这个问题。结果一天过去了,也没弄出来。而他的帖子也沉得找不到了,所以再问一次。
问题一:下面程序,类ListDemo中定义了一个成员变量 List<String> array 。怎样通过反射的获取到array的泛型String?
问题二:Field类中的getGenericType这个方法是干嘛用的?- package practise;
- import java.lang.reflect.Field;
- import java.lang.reflect.Type;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- class ListDemo
- {
- private List<String> array = new ArrayList<String>();
-
- public void setArray()
- {
- array.add("林青霞");
- array.add("齐秦");
- array.add("齐豫");
- array.add("大S");
- }
- }
- class MainClass
- {
- public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException
- {
- ListDemo ld = new ListDemo();
- ld.setArray();
-
- Class<?> clszz = ld.getClass();
- Field filed = clszz.getDeclaredField("array");
- filed.setAccessible(true);
-
- // Type type = filed.getGenericType();
-
- ArrayList arrayList = (ArrayList)filed.get(ld);
- for(Iterator iterator = arrayList.iterator();iterator.hasNext();)
- {
- System.out.println(iterator.next());
- }
- }
- }
-
复制代码 程序运行结果:
林青霞
齐秦
齐豫
大S
|