拿范型T的CLASS值

abstract public class BaseHibernateEntityDao<T> extends HibernateDaoSupport {
 private Class<T> entityClass;
 public BaseHibernateEntityDao() {
        entityClass =(Class<T>) ((ParameterizedType) getClass()
                                .getGenericSuperclass()).getActualTypeArguments()[0];
    }
 public T get(Serializable id) {
        T o = (T) getHibernateTemplate().get(entityClass, id);
}
}
public class BookDao extends BaseHibernateEntityDao<Book>

方法one:
public class Test2<T>
{
	Class<T> clazz;

	@SuppressWarnings("unchecked")
	public Test2(Class<T> clazz)
	{
		this.clazz = clazz;
		System.out.println(clazz);
	}

	public static void main(String[] args)
	{
		Test2<Integer> t = new Test2<Integer>(Integer.class);
	}
}

方法TWO:
public class Father<T>
{
	Class<T> clazz;

	@SuppressWarnings("unchecked")
	public Father()
	{
		clazz = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
	}
}

public class Test1 extends Father<Integer>
{
	public Test1()
	{
		System.out.println(clazz);
	}

	public static void main(String[] args)
	{
		Test1 t = new Test1();
	}
}

你可能感兴趣的:(反射,范型)