A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王维波 黑马帝   /  2011-11-6 16:28  /  1342 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public abstract class BaseHibernateDao<T> extends HibernateDaoSupport {
        public T create(T entity) throws DataAccessException {
                getHibernateTemplate().save(entity);
                return entity;
        }
        public Object load(Class cls, Serializable id) throws DataAccessException {
                return getHibernateTemplate().load(cls, id);
        }
}

public class CounterDao extends BaseHibernateDao<CounterImpl>{}

对于第一个Create方法使用泛型没问题,但是对于第二个load方法,怎么将型别T的Class信息固化在load方法内部呢,而不需要作为Class cls参数传入了。我试过T.Class,代码提示是有的,但是编译不通过

该贴已经同步到 保持常态0616的微博

评分

参与人数 1技术分 +1 收起 理由
admin + 1 继续等待大家的回答!

查看全部评分

1 个回复

倒序浏览
泛型的作用期间是编译之前和编译中。在编译后,泛型信息被擦除。这就意味着在运行期间是无法得到泛型信息的。
T的固有信息是无法传递到运行期间的。
所有试图在运行期调用类型T的具体类型信息的努力都是无法实现的。

“我试过T.Class,代码提示是有的,但是编译不通过 “,不明白你是这么试的,你能把你编译通不过的代码写上来吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马