读书人

难题,关于1.5中的泛型的设想解决思路

发布时间: 2012-02-08 19:52:21 作者: rapoo

难题,关于1.5中的泛型的设想
public List getSomeTypeList(Object obj)
{
String type=obj.getClass().toString();
List <type> list=new ArrayList <type> ();
return list;
}

上面的这段程序当然是错的,意图是想根据一个对象的类型,来返回一个和这个对象类型一样的泛型List, 我想知道, type能不能作为变量来限定这个泛型呢? java1.5中有没有 "泛型 "类型的变量呢?



[解决办法]
之所以引入泛型
主要就是为了把运行期可能出现的类型转换异常
提到编译期来发现和抛出
这样 就减少了运行时出错的可能性

如果按照楼主的想法
引入变量来标识泛型 而这个变量也只有在运行起才能够赋值
那么 就起不到编译期查错的作用了
就违背了引入泛型的初衷了

[解决办法]
1:泛型是类型安全的,因为他在编译期间做了类型检查.
而 "String type=obj.getClass().toString(); "是RTTI(运行期信息),
所以type不能作为变量来限定这个泛型呢.

2:> > java1.5中有没有 "泛型 "类型的变量呢?
你想要的是?
static void testGp(List <String> l) {

for(int i=0;i <l.size();i++)
System.out.println(l.get(i));

}
3:lz想表达类似c++中模板

class TestGen {

 <T extends Object> public static List<T> make(T first) {

return new List<T>(first);

 }

}

[解决办法]
二楼的emin_lee(emin) 说的很对 你的想法确实违背了泛型的初衷 如果楼主感觉麻烦那可以不用泛型嘛 也不是必须要用
[解决办法]
同意楼上,泛型的引入是为了避免出错,使用变量,就达不到这种效果了。

读书人网 >J2SE开发

热点推荐