您的位置:首页 > 编程语言 > Java开发

【Java】获取泛型的类型

2015-10-29 00:50 766 查看
【解决办法】:http://stackoverflow.com/questions/3437897/how-to-get-a-class-instance-of-generics-type-t 

1、纯Java方法:http://blog.xebia.com/2009/02/07/acessing-generic-types-at-runtime-in-java/ 

((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);


2、spring的办法

import org.springframework.core.GenericTypeResolver;

public abstract class AbstractHibernateDao<T extends DomainObject> implements DataAccessObject<T>
{

@Autowired
private SessionFactory sessionFactory;

private final Class<T> genericType;

private final String RECORD_COUNT_HQL;
private final String FIND_ALL_HQL;

@SuppressWarnings("unchecked")
public AbstractHibernateDao()
{
this.genericType = (Class<T>) GenericTypeResolver.resolveTypeArgument(getClass(), AbstractHibernateDao.class);
this.RECORD_COUNT_HQL = "select count(*) from " + this.genericType.getName();
this.FIND_ALL_HQL = "from " + this.genericType.getName() + " t ";
}
}


扩展:

泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

这类需求往往是在实现数据库实现当中。

【需求来源】:http://blog.sina.com.cn/s/blog_682e9dfd0100uxjb.html

例子待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 泛型