泛型的出现是为了解决java代码的臃肿和繁琐的,在JDK1.5时加入的新特性;
下面以HashTable为例举个例子来说明,java的泛型;
在JDK1.5以前的版本,如果要网HashTable里存数据和取数据是这样的:
Hashtable ht = new Hashtable();
//往集合里放入数据
ht.put(new Integer(3),"value1");
ht.put(new Integer(6),"value1");
//取数据
String str = (String)ht.get(new Integer(3)); //如果这里不做强转的的就会报错: 需要: String 找到: Object
System.out.println(str);
向上面这样的情况,在JDK1.5以前,如果不做强转动作的话,每次都会报错,而且我们明明知道集合里存的就是String类型的数据,但是jvm可不这么认为,他认为里面是Object类型的数据,那么要集合中取出数据,就必须强转了,这跟程序员带来了很大的困扰,因为每次都要做强转动作,所以程序员们的心情是可想而知的{:soso_e118:}
在JDK1.5时,就加入了泛型,在Hashtable后面定义<key,value>两个对象的类型,这样在创建性的Hashtable对象是,我们就可以在<key,value>中定义键和值得具体类型。于是上面例子的代码就可以这样写:
Hashtable<Integer,String> ht = new Hashtable<Integer,String>();
//往集合里放入数据
ht.put(new Integer(3),"value1");
ht.put(new Integer(6),"value1");
//取数据
String str = ht.get(new Integer(3));//在去数据的时候,就不用再做强转的动作了,就不用在{:soso_e135:}
System.out.println(str);
总上所属,加入了泛型的java,我们就不用再{:soso_e135:},而可以{:soso_e160:}{:soso_e129:}了,
|