java中什么是泛化_JAVA泛化及為什么需要泛化

泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。

比如,有一種類型為List,此時該List可以是任意類型的列表,如Integer,String等等。

如果把List類型改為List,則此時只表示整型的列表。

這就是所謂的將操作的數據類型指定為一個參數,這等同於C++里面的模板(template)。

那么這么做有什么好處呢?

比如原來我們有如下的程序:

List myIntList = new LinkedList();// 1

myIntList.add(new Integer(0));// 2

Integer x = (Integer) myIntList.iterator().next();// 3

在第三行中進行了強制類型轉換。這個類型轉換不僅僅帶來了混亂,它還可能產生一個運行時錯誤(run time error),因為程序員可能會犯錯。

程序員如何才能明確表示他們的意圖,把一個list中的內容限制為一個特定的數據類型呢?這是generics背后的核心思想。這是上面程序片斷的一個泛型版本:

List myIntList = new LinkedList(); // 1

myIntList.add(new Integer(0)); // 2

Integer x = myIntList.iterator().next(); // 3

注意變量myIntList的類型聲明。它指定這不是一個任意的List,而是一個Integer的List,寫作:List。我們說List是一個帶一個類型參數的泛型接口(a generic interface that takes a type parameter),本例中,類型參數是Integer。我們在創建這個List對象的時候也指定了一個類型參數。

另一個需要注意的是第3行沒了類型轉換。

一句話:就是給容器指定類型 ,那么在使用這個容器的時候,就不用特意的轉型了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值