Java之通配符


1、 通配符

不確定集合中的元素具體的數據類型
使用?表示所有類型

格式:

public void test(List<?> list){
	System.out.println(list);
}

2、 有限制的通配符

public class Test2 {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		Dd d = new Dd();
		d.test(list);
		
		List<D1> ld = new ArrayList<D1>();
		d.test1(ld);
		List<A1> la = new ArrayList<A1>();
//		d.test1(la);//不能傳A1對象類型,只能傳C1及其子類
		
//		d.test2(ld);//不能傳D1對象類型,只能傳C1及其父類
		
		//接口
		List<Ee> le = new ArrayList<Ee>();
		d.test3(le);
	}
}

class Dd{
	/**
	 * 不確定集合中的元素具體的數據類型
	 * 使用?表示所有類型
	 * @param list
	 */
	public void test(List<?>list) {}//test方法需要一個list集合的參數,不確定list集合到底是存的數據的類型是什么?用?
	public void test1(List<? extends C1> list) {}//? extends C1 只允許接收C1或C1的子類
	public void test2(List<? super C1> list) {}//? super C1 只允許接收C1或C1的父類
	public void test3(List<? extends E1> list) {}//? extends E1 只允許接收接口E1的實現類
}

class A1{}
class B3 extends A1{}
class C1 extends B3{}
class D1 extends C1{}
//接口
interface E1{}
class Ee implements E1{}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM