java泛化_JAVA泛化及为什么需要泛化
展開全部
泛型的本質(zhì)是參數(shù)化類型,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一32313133353236313431303231363533e58685e5aeb931333361326262個(gè)參數(shù)。
比如,有一種類型為L(zhǎng)ist,此時(shí)該List可以是任意類型的列表,如Integer,String等等。
如果把List類型改為L(zhǎng)ist,則此時(shí)只表示整型的列表。
這就是所謂的將操作的數(shù)據(jù)類型指定為一個(gè)參數(shù)
那么這么做有什么好處呢?
比如原來(lái)我們有如下的程序:List?myIntList?=?new?LinkedList();//?1
myIntList.add(new?Integer(0));//?2
Integer?x?=?(Integer)?myIntList.iterator().next();//?3
在第三行中進(jìn)行了強(qiáng)制類型轉(zhuǎn)換。這個(gè)類型轉(zhuǎn)換不僅僅帶來(lái)了混亂,它還可能產(chǎn)生一個(gè)運(yùn)行時(shí)錯(cuò)誤(run time error),因?yàn)槌绦騿T可能會(huì)犯錯(cuò)。
程序員如何才能明確表示他們的意圖,把一個(gè)list中的內(nèi)容限制為一個(gè)特定的數(shù)據(jù)類型呢?這是generics背后的核心思想。這是上面程序片斷的一個(gè)泛型版本:List?myIntList?=?new?LinkedList();?//?1
myIntList.add(new?Integer(0));?//?2
Integer?x?=?myIntList.iterator().next();?//?3
注意變量myIntList的類型聲明。它指定這不是一個(gè)任意的List,而是一個(gè)Integer的List,寫作:List。我們說(shuō)List是一個(gè)帶一個(gè)類型參數(shù)的泛型接口(a generic interface that takes a type parameter),本例中,類型參數(shù)是Integer。我們?cè)趧?chuàng)建這個(gè)List對(duì)象的時(shí)候也指定了一個(gè)類型參數(shù)。
另一個(gè)需要注意的是第3行沒了類型轉(zhuǎn)換。
總結(jié)
以上是生活随笔為你收集整理的java泛化_JAVA泛化及为什么需要泛化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java robot 对象_用Java
- 下一篇: java快速排序的时间复杂度_java