2007-03-10
请帮忙看一下这几个关于泛型的问题
1.普通集合类是不是可以直接转换为泛型的集合类? 好象是可以,因为以下代码可以正常运行
2.以下代码中public后的那个<T>作何解释,好象去掉也是可以运行的。
3.为什么ls不过赋给lo,String是Object的子类啊?
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),数组是协变的。
泛型不是协变的(covariant),数组是协变的。
raykcn
2007-03-11
问题1
我感觉是Object 和 String 转换的问题
首先你用了for (String string : ls) {...} 当然没问题
可是如果 String str = list.get(index); 方式呢 ?
传统代码 :
但是用了泛型之后呢...
问题2
<T> 只不过是个类型参数.
怎么说呢,类似于方法中的 引数,只是抽象的定义. 传什么就是什么. 如List<T>传String后就变为 List<String>.
关注 问题3 ......!
我感觉是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 ......!
- 浏览: 19244 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
推荐一本新的Spring书
我早就买了,是本好书,可以说授意非浅,比一般的资料书要详细和准确很多,而且也很深 ...
-- by byduke -
推荐一本新的Spring书
这本书还行吧,我买了一本。总是说来还是分析很到位的。
-- by jljlpch -
推荐一本新的Spring书
枪手?没看过这本书.
-- by ffgames -
推荐一本新的Spring书
买过了。。。
-- by clh8801 -
推荐一本新的Spring书
我买了这本书,确实很好,但是当当没给我发光盘,gui qiu一个光盘,我的msn ...
-- by nerv828






评论排行榜