Java編程泛型限定代碼分享
 泛型 一般 出現(xiàn)在集合中,迭代器中 也會出現(xiàn)!
泛型 是為了 提高代碼的 安全性。 泛型 確保數(shù)據(jù)類型的唯一性。
在我們常用的容器中, 越是單一越好處理??!  
    泛型的限定:
? 是通配符 指代 任意類型
泛型的限定上限:
<? extends E> 接受 E 或者 E 的子類型。
泛型的限定下限:
<?  super   E>  接收  E 或者 E 的父類。
泛型的限定上限 (定義父類 填裝子類 類型?。?/p>
下面我們看看具體代碼示例
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
		//為了解決等號兩邊泛型不一致的情況,jdk1.7以后可以這么寫
		ArrayList<Person> al = new ArrayList<>();//右邊的泛型自動反射進來
		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編程泛型限定代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以參閱:Java編程基礎(chǔ)測試題分享、Java編程redisson實現(xiàn)分布式鎖代碼示例、Java線程安全與非線程安全解析等,如有不足之處,歡迎留言指出,小編會及時回復(fù)大家并進行修改,希望朋友們對本站多多支持!
欄 目:Java編程
下一篇:Java編程用棧來求解漢諾塔問題的代碼實例(非遞歸)
本文標(biāo)題:Java編程泛型限定代碼分享
本文地址:http://www.jygsgssxh.com/a1/Javabiancheng/8450.html
您可能感興趣的文章
- 01-10Java咖啡館(1)——嘆咖啡
 - 01-10Java Socket編程(三) 服務(wù)器Sockets
 - 01-10Java進階:Struts多模塊的技巧
 - 01-10Java Socket編程(一) Socket傳輸模式
 - 01-10Java Socket編程(二) Java面向連接的類
 - 01-10Java運行時多態(tài)性的實現(xiàn)
 - 01-10Java經(jīng)驗點滴:處理沒有被捕獲的異常
 - 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)器
 - 01-10Java中的浮點數(shù)分析
 - 01-10面向?qū)ο缶幊?Java中的抽象數(shù)據(jù)類型
 


閱讀排行
本欄相關(guān)
- 01-10Java咖啡館(1)——嘆咖啡
 - 01-10JVM的垃圾回收機制詳解和調(diào)優(yōu)
 - 01-10Java Socket編程(三) 服務(wù)器Sockets
 - 01-10Java進階:Struts多模塊的技巧
 - 01-10J2SE 1.5版本的新特性一覽
 - 01-10Java Socket編程(一) Socket傳輸模式
 - 01-10Java運行時多態(tài)性的實現(xiàn)
 - 01-10Java Socket編程(二) Java面向連接的類
 - 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)
 - 01-10Java經(jīng)驗點滴:處理沒有被捕獲的異常
 
隨機閱讀
- 01-10C#中split用法實例總結(jié)
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 04-02jquery與jsp,用jquery
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-10delphi制作wav文件的方法
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 


