日期:2014-05-20  浏览次数:20722 次

难题,关于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) 说的很对 你的想法确实违背了泛型的初衷 如果楼主感觉麻烦那可以不用泛型嘛 也不是必须要用
------解决方案--------------------
同意楼上,泛型的引入是为了避免出错,使用变量,就达不到这种效果了。