Java为什么要引入泛型?

1. 实现泛型的目的

泛型要实现的目标就是在编译的时候就能找出bugs,而不是在运行时才发现错误。在编译的时候就能找出问题能帮助我们节省大量的时间,因为在编译时bugs更容易找出(编译器帮我们找出)也更容易修复。重要的是泛型是属于编译期的概念。

2. 如果没有泛

class Room {
 
	private Object object;
 
	public void add(Object object) {
		this.object = object;
	}
 
	public Object get() {
		return object;
	}
}
 
public class Main {
	public static void main(String[] args) {
		Room room = new Room();
		room.add("60"); //this will cause a run-time error
		Integer i = (Integer)room.get();
		System.out.println(i);
	}
}
     在这儿我们想实现一个类,我们想让这个类的成员变量可以是任何类型,其实一个Room是可以放各样的东西的,所以这儿成员变量的类型为Object,表示这个房间可以放各样的东西。

    想想如果我们在这个Room里面放的是一个字符串,但我们要取这个字段的时候我们以为自己之前存的是一个Integer类型的数据,这时候在运行期就会报错了

3. 如果用泛型

class Room<T> {
 
	private T t;
 
	public void add(T t) {
		this.t = t;
	}
 
	public T get() {
		return t;
	}
}
 
public class Main {
	public static void main(String[] args) {
		Room<Integer> room = new Room<Integer>();
		room.add(60);
 
		Integer i = room.get();
		System.out.println(i);
	}
}

     如果main方法改成如下,add一个字符串这时候就会出现编译错误信息。因Room<Integer>的实例对象只能add Integer类型的对象,编译器会做强类型检查。还有一个好处是,我们不在需要给get()方法取出来的对象塑型了,因为编译器知道get()方法会返回什么类型,而不是在运行期才知道。


4. 总结

    虽然引入泛型的目的是在编译期的时候就能检查出错误来,但同时泛型的引入也增强了代码的可复用性。

参考:http://www.programcreek.com/2012/04/why-do-we-need-generic-types-in-java/

转载于:https://my.oschina.net/u/1583086/blog/357315

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值