java 泛型实现原理及使用详解 - 点滴记忆*记忆点滴
收藏本站

java 泛型实现原理及使用详解

    自java 1.5 起,我们可以在java中使用泛型了。关于为什么要使用泛型,可能是很多新手迷茫的地方。用一个Object 类代替不就好了。光说也记不住,练吧,如:


//未使用泛型时

 	public static void test(){
		List l = new ArrayList();
		l.add(Integer.valueOf(1));
		Integer b = (Integer) l.get(0);
		System.out.println(b);
	}

//使用泛型后	
	public static void testG(){
		List<Integer> l = new ArrayList<Integer>();
		l.add(Integer.valueOf(1));
		Integer b = l.get(0);
		System.out.println(b);
	}
	
在java泛型出现前,我们使用List都是test 中的方式,其中add方法的参数就是Object , add(Object o){...},只要编码者记住自己add 都List 中的类型,使用时加一个强制转型就好了。 而有了泛型后使用的方式对比之前,发现就是少了转型。无论是编码量和效率都没变化。使不使用泛型是否无所谓了呢。如果你觉得是说明你确实编程经验,并且对软件生命周期理解不清楚。


确实使用泛型并不会增加我们软件的运行速度,但它能在编译期间帮你排除常见的类型转换错误。

未使用泛型, X c = (X)l.get(0); 在编译器不会报错,只有等到程序运行到这段代码时才报错。

而使用泛型后,上面的代码根本通不过编译。也就是在你编码时就可以找出错误。

有编程经验的你肯定知道,bug出现时间越靠后,你修复它所发的时间越长,这也就是使用泛型的最主要原因。

使用泛型很简单,但要使用好我们还需了解其实现原理

    留下足迹