package com.e2u.generic;
import java.lang.reflect.*;
import java.util.*;
public class ParameterizedTypeTest {
/**
* @param args
*/
public static void main(String[] args) {
test1();
}
public static void test1()
{
WrapperClass wc = new WrapperClass();
HashMap<String, Integer> map = new HashMap<String, Integer>();
try {
Field field = WrapperClass.class.getDeclaredField("myObj");
Type type = field.getGenericType();
// Type type = map.getClass().getGenericSuperclass();
System.out.println("Type=" + type);
if (type instanceof ParameterizedType)
{
ParameterizedType pt = (ParameterizedType) type;
System.out.println("RawType=" + pt.getRawType());
System.out.println("OwnerType=" + pt.getOwnerType());
Type[] types = pt.getActualTypeArguments();
if(types != null && types.length > 0)
{
for(int i = 0; i < types.length; i++)
{
System.out.println(" ActualTypeArgs[" + i + "]=" + types[i]);
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
class MyObject<T>
{
private List<T> list = new ArrayList<T>();
public T getFirst()
{
if(list.size() > 0)
{
return list.get(0);
}
return null;
}
public void add(T obj)
{
list.add(obj);
}
}
class WrapperClass
{
private MyObject<List<Map<Integer, String>>> myObj = new MyObject<List<Map<Integer, String>>>();
}