java --泛型

#1.爲何要使用泛型?
1.解決元素存儲的安全性問題。
在一個list鍾,我原本只但願存儲String類型的對象,可是沒有使用泛型時,Object類對象能夠存儲進去。這就形成list中元素類型不一致。
2.解決獲取元素數據時,須要類型強轉的問題。
在如上list中獲取元素數據時,很明顯獲取String類型時,須要強轉String;獲取Object元素時,須要強轉Object。
使用了泛型,1.就規定了list中存放元素的類型;2.取出元素時,不須要作類型轉換。安全

public void testGeneric() {
		/**
		 * 不使用泛型
		 */
		List list = new ArrayList<>();
		list.add(78);
		list.add(85);
		list.add(69);
		//1.不安全元素進來了
		list.add(new String("AA"));
		for (int i = 0; i < list.size(); i++) {
			//2.強轉出現問題
			int score = (int) list.get(i);
			System.out.println(score);
		}
		
		/**
		 * 使用泛型
		 */
		List<Integer> list2 = new ArrayList<>();
		list2.add(78);
		list2.add(85);
		list2.add(69);
		//不安全元素進不來
		//list2.add(new String("AA"));
		for (int i = 0; i < list2.size(); i++) {
			//2.強轉出現問題
			int score = list2.get(i);
			System.out.println(score);
		}
	}

#2.自定義泛型類、泛型接口、泛型方法code

/**
 * 自定義泛型類
 * 
 */
public class Order<T> {
	
	private int orderId;
	private String orderName;
	private T t;
	private List<T> list;
	//用上面自定義的t
	public void add() {
		list.add(t);
	}
	//自定義泛型方法
	//傳入什麼類型元素,就輸出什麼類型元素
	public <E> E getE(E e) {
		return e;
	}
}

使用自定義泛型類對象

public void testGeneric() {
		Order<String> order = new Order<>();
		order.setOrderId(1001);
		order.setOrderName("張三");
		order.setT("講故事");
		System.out.println(order);
		
		order.setList(new ArrayList<>());
		//將order.getT()的值添加到order的list屬性中
		order.add();
		System.out.println(order);
		//接收數據類型必須與傳入數據類型一致
		int tmp = order.getE(123);
		System.out.println(tmp);
	}

#3.通配符接口

public void testGeneric() {
		
		//這裏?表明通配符
		//便可以表明任何類型
		List<?> list = null;
		List<Integer> list1 = new ArrayList<>();
		List<String> list2 = new ArrayList<>();
		list = list1;
		list = list2;
	}
相關文章
相關標籤/搜索