1.普通集合类是不是可以直接转换为泛型的集合类? 好象是可以,因为以下代码可以正常运行
public static void main(String[] args) {
    List<String> ls = new ArrayList();
    ls.add("str1");
    ls.add("str2");
    ls.add("str3");
    for (String string : ls) {
	System.out.println(string);
  }
}


2.以下代码中public后的那个<T>作何解释,好象去掉也是可以运行的。
public <T> List<T> getAll(Class<T> entityClass) {
   return getHibernateTemplate().loadAll(entityClass);
}


3.为什么ls不过赋给lo,String是Object的子类啊
  List<Object> lo = new ArrayList<Object>();	
  List<String> ls = new ArrayList<String>();
  lo = ls;//<---此外语法编译不过	
评论
forfail 2007-04-05
问题 3:
泛型不是协变的(covariant),数组是协变的。
raykcn 2007-03-11
问题1
我感觉是Object 和 String 转换的问题
首先你用了for (String string : ls) {...} 当然没问题
可是如果 String str = list.get(index); 方式呢 ?

传统代码 :
public static void main(String[] args) {   
    List ls = new ArrayList();   
    ls.add("str1");   
    ls.add("str2");   
    ls.add("str3");   
    String st= (String)list.get(1); //此处必须强制转换.
    System.out.println(st);  
}

但是用了泛型之后呢...
public static void main(String[] args) {   
    List<String> ls = new ArrayList();   
    ls.add("str1");   
    ls.add("str2");   
    ls.add("str3");   
    String st= list.get(1); //这里就不用强制转换了.
    System.out.println(st);  
}


问题2
<T> 只不过是个类型参数.
怎么说呢,类似于方法中的 引数,只是抽象的定义. 传什么就是什么. 如List<T>传String后就变为 List<String>.

关注 问题3 ......!
quickselect
搜索本博客
博客分类
最近加入圈子
存档
最新评论
评论排行榜