本帖最后由 zhangzhenting 于 2010-01-06 10:23:10 编辑

解决方案 »

  1.   

    entityClass = (Class<T>)((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0];
    会出现类型转换异常,说是要实现一个接口,试过之后还是不行。
      

  2.   

    觉得有些奇怪,直接把你代码的上两行放开,不就是你要的结果吗????
     public static void main(String[] args)
        {
          Test<TT> test = new Test<TT>(TT.class);
           System.out.println(test.getEntityClass());        //Test<TT> test = new Test<TT>();
           // System.out.println(test.getEntityClass());
        }
      

  3.   

    public class Test<T> extends ParameterizedType试试看
      

  4.   

    这是由于java1.5的erasure特性导致的,换成这样写就对了:
    Test<TT> test = new Test<TT>(){};
      

  5.   

    很怀念 typedef 。可惜在 java 中不支持。我也为这个语句头痛过很久,就是不能把拖尾巴的两个括号去掉。不建议使用这种写法。因为少写两个括号,编译器不会报错,但程序逻辑错了。所以我不建议使用这种写法,而是坚持把 Class 显式指定,或者给一个非 null 的缺省对象,从这个缺省对象得到 EntityClass 。
      

  6.   

      嘿嘿在我看来不是一样吗?
       既然你已经知道了该类为什么就不能作为参数传递呢?//也就是你的Test<TT>这个TT哪里的?
         
          
      

  7.   

    终于还是自己解决了,总结下:代码继承结构:
    class HibernateEntityDao<T> extends HibernateGenericDao implements EntityDao<T>对于SSH框架范型DAO的应用,不要将范型类HibernateEntityDao<T>注入,换成继承的方式。配置:
    在Spring配置HibernateEntityDao对应的bean时,将范围设置成prototype。
    <bean id="entityDao" class="com.zzt.framework.dao.HibernateEntityDao" scope="prototype" parent="hibernateTemplate" /><bean id="xxxDao" class="com.zzt.xxx.xx.XxxDAO" parent="entityDao" />该范型DAO可以被实体类DAO或实体Service继承。
      

  8.   


    估计很难懂,其实就是 SpringSide 的应用。父类<范型> 引用  一个继承了已经范型好的父类的子类才可以得到呵呵