Java編程泛型限定代碼分享
泛型 一般 出現(xiàn)在集合中,迭代器中 也會(huì)出現(xiàn)!
泛型 是為了 提高代碼的 安全性。 泛型 確保數(shù)據(jù)類型的唯一性。
在我們常用的容器中, 越是單一越好處理啊!
泛型的限定:
? 是通配符 指代 任意類型
泛型的限定上限:
<? extends E> 接受 E 或者 E 的子類型。
泛型的限定下限:
<? super E> 接收 E 或者 E 的父類。
泛型的限定上限 (定義父類 填裝子類 類型!)
下面我們看看具體代碼示例
package newFeatures8; import java.util.*; /* ? 通配符。也可以理解為占位符。 泛型的限定; ? extends E: 可以接收E類型或者E的子類型。上限。 ? super E: 可以接收E類型或者E的父類型。下限 */ class GenericDemo6 { public static void main(String[] args) { /* * ArrayList<String> al = new ArrayList<String>(); * * al.add("abc1"); al.add("abc2"); al.add("abc3"); * * ArrayList<Integer> al1 = new ArrayList<Integer>(); al1.add(4); * al1.add(7); al1.add(1); * * printColl(al); printColl(al1); */ //ArrayList<Person> al = new ArrayList<Student>();error //為了解決等號(hào)兩邊泛型不一致的情況,jdk1.7以后可以這么寫(xiě) ArrayList<Person> al = new ArrayList<>();//右邊的泛型自動(dòng)反射進(jìn)來(lái) al.add(new Person("abc1")); al.add(new Person("abc2")); al.add(new Person("abc3")); // printColl(al); ArrayList<Student> al1 = new ArrayList<Student>(); al1.add(new Student("abc--1")); al1.add(new Student("abc--2")); al1.add(new Student("abc--3")); printColl(al1); } public static void printColl(Collection<? extends Person> al) { Iterator<? extends Person> it = al.iterator(); while (it.hasNext()) { System.out.println(it.next().getName()); } } /*public static void printColl(ArrayList<?> al) { Iterator<?> it = al.iterator(); while (it.hasNext()) { System.out.println(it.next().toString()); } }*/ } class Person { private String name; Person(String name) { this.name = name; } public String getName() { return name; } } class Student extends Person { Student(String name) { super(name); } } /* class Student implements Comparable<Person> { public int compareTo(Person s){ this.getName() } } */ /* class Comp implements Comparator<Person>{ //<? super E> public int compare(Person s1,Person s2) { //Person s1 = new Student("abc1"); return s1.getName().compareTo(s2.getName()); } } TreeSet<Student> ts = new TreeSet<Student>(new Comp());//TreeSet(Comparator<? super E> comparator) ts.add(new Student("abc1")); ts.add(new Student("abc2")); ts.add(new Student("abc3")); */
總結(jié)
以上就是本文關(guān)于Java編程泛型限定代碼分享的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以參閱:Java編程基礎(chǔ)測(cè)試題分享、Java編程redisson實(shí)現(xiàn)分布式鎖代碼示例、Java線程安全與非線程安全解析等,如有不足之處,歡迎留言指出,小編會(huì)及時(shí)回復(fù)大家并進(jìn)行修改,希望朋友們對(duì)本站多多支持!
上一篇:Java編程實(shí)現(xiàn)逆波蘭表達(dá)式代碼示例
欄 目:Java編程
下一篇:Java編程用棧來(lái)求解漢諾塔問(wèn)題的代碼實(shí)例(非遞歸)
本文標(biāo)題:Java編程泛型限定代碼分享
本文地址:http://mengdiqiu.com.cn/a1/Javabiancheng/8450.html
您可能感興趣的文章
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒(méi)有被捕獲的異常
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)器
- 01-10Java中的浮點(diǎn)數(shù)分析
- 01-10面向?qū)ο缶幊?Java中的抽象數(shù)據(jù)類型


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10J2SE 1.5版本的新特性一覽
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒(méi)有被捕獲的異常
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置