泛型

首先提醒一句,Java编程追求的境界是编写更加通用的代码,使得代码能够应用于“某种不具体的类型”。

泛型的意思就是适用于许多许多的类型。有时候我们想写一些通用代码,比如参数,我们在写方法的时候不想指定具体的类型,如果没有泛型,这个时候我们只能写一个Object类型。当我们在取出该参数的时候,需要进行类型的强制转换,因为往往我们要拿出来的是一个比如String类型的具体类型,而不仅仅是通用的Object类型。凡是涉及到这样的转换,就必定存在运行时的风险,这是一个安全上的隐患。

泛型对操作类型进行了一定的约束,从而使得可能发生在运行时的一场在编译时就被发现,这样就减少了出错的概率。常常会遇到使用容器的时候,放对象进去,然后在什么地方又要取出来。如果没有泛型的话,那么每次拿出来的时候必须进行一个向下类型转换,或者需要做类型检查。有时候对类型没有限制的话,很容易将不同类型的对象放进去,比如你先放了一个字符串,后来又放了一个Integer,但是隔的时间久了或者多人开发的时候,取出来就不知道转换成什么类型了。这样对类型安全不利,及其容易造成不安全因素。而且你所进行的转换或者类型检查都是在运行时进行的,增加了很多程序运行时的不确定性。

使用了泛型就不一样了,提前规定好,比如我这个List里面只能装String,好,那么大家就规规矩矩地把String往里放就是了。取的时候也不用进行类型转换,因为是默认的。这个时候如果你想尝试放一个Integer进去,那么编译就无法通过。这个的好处就在于这些关于类型的检查都在编译期就完成了,有问题早发现,而不需要等到运行时。而且,类型的转换都是虚拟机自动和隐式进行的,从而也在一定程度上提高了代码的重用率。

泛型不仅仅是针对Class Type,也针对Methods,对于Class Type,泛型的声明是在类名的后面,而对于方法来说,是在方法返回类型的前面。比如

Collection<String>, public <Integer> void test(){    }

类的泛型主要是为了限制该类的成员变量的类型。

而方法的泛型主要是为了保证参数的类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值