先回忆了一下以前学过的内容,就是获取泛型的几种方法,直接用代码表示把,直接一点
- package ProxyGenericText;
- import java.lang.reflect.Method;
- import java.lang.reflect.ParameterizedType;
- import java.lang.reflect.Type;
- import java.util.ArrayList;
- import java.util.List;
- public class Test1 {
- public static void main(String[] args) throws Exception {
- //第一种方法,用方法上的参数来获取泛型
- Class c1 = Test1.class;
- Method m = c1.getMethod("mm", List.class);
- Type[] types = m.getGenericParameterTypes();
- ParameterizedType pt = (ParameterizedType)types[0];
- System.out.println("原类型"+pt.getRawType());
- Type[] types1 = pt.getActualTypeArguments();
- System.out.println("实际类型" +types1[0]);
- System.out.println("第二种形式,类的参数化------");
- //第二种方法,用类申明上的信息来获取泛型
- MyList my = new MyList();
- Class c2 = my.getClass();
- Type t2 = c2.getGenericSuperclass();
- ParameterizedType pt2 = (ParameterizedType)t2;
- Type[] types2 = pt2.getActualTypeArguments();
-
- System.out.println("原类型" +pt2.getRawType());
- System.out.println("实际类型1"+t2);
- System.out.println("实际类型2"+types2[0]);
- }
- public static void mm(List<Integer> lt) {
-
- }
- }
- class MyList extends ArrayList<Long> {
-
- }
复制代码
现在又有一个问题了,如果我现在只是有一个对象a,但我不知道他的类申明语句。比如说,ArrayList<String> a = new ArrayList<String>();
我现在仅仅只是有一个对象a,我该如果获取他身上的泛型信息呢?
|