T[] arr = (T[])list.toArray();

解决方案 »

  1.   

    dreamover(梦醒了〖http://hellfire.cn〗) ( ) 信誉:100    Blog  2006-11-29 09:15:11  得分: 0  
     
     
       T[] arr = (T[])list.toArray();
    --------------------------------------------------------------------------------
    试了,错误:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
      

  2.   

    使用List就行啊
        public static List<T> find(String hql) {   
            List list = null;   
            try {   
                Session session = currentSession();   
                list = session.createQuery(hql).list();   
                closeSession();   
            } catch (HibernateException ex) {   
                System.out.println(ex);   
            }   
            return list;   
        }
      

  3.   

    Top  
     ChDw(米) ( ) 信誉:155    Blog  2006-11-29 09:40:38  得分: 0  
     
     
       使用List就行啊
        public static List<T> find(String hql) {  
    --------------------------------------------------------------------我想返回的是 T[] 这样调用find得到查询结果不需要再做类型转换 
       
      

  4.   

    就算是List<T>也不需要转换啊如果你实在坚持使用数组,可以这样写:
    abstract class AbstractDB<T> {
    @SuppressWarnings("unchecked")
    public T[] find(String hql) {
    ParameterizedType thisType = (ParameterizedType) getClass().getGenericSuperclass();
    Class<T> domainClass = (Class<T>) thisType.getActualTypeArguments()[0];
    List list = null; T[] arr = (T[]) Array.newInstance(domainClass, list.size());
    list.toArray(arr);
    return arr;
    }
    }class UserDB extends AbstractDB<String> {
    }
    代码中
    new UserDB().find(null);
      

  5.   

    哦,上面的List list = null;代码需要改成你自己的hsql查询代码