集合框架-泛型高階之萬用字元

ZHOU_VIP發表於2017-04-23

package cn.itcast.mybatis.pojo;

import java.util.ArrayList;
import java.util.Collection;

/*
 * 泛型高階(萬用字元)
 * ?:任意型別,如果沒有明確,那麼就是Object以及任意的Java類了
 * ? extends E:向下限定,E及其子類
 * ? super   E:向上限定,E極其父類
 */
public class GenericDemo {
	
	public static void main(String[] args) {
		
		// 泛型如果明確的寫的時候,前後必須一致
		// 可以
		   Collection<Object> c1 = new ArrayList<Object>();
		// 不行
		// Collection<Object> c2 = new ArrayList<Animal>();
		// 不行
		// Collection<Object> c3 = new ArrayList<Dog>();
		// 不行
		// Collection<Object> c4 = new ArrayList<Cat>();

		// ?表示任意的型別都是可以的
		Collection<?> c5 = new ArrayList<Object>();
		Collection<?> c6 = new ArrayList<Animal>();
		Collection<?> c7 = new ArrayList<Dog>();
		Collection<?> c8 = new ArrayList<Cat>();

		// ? extends E:向下限定,E及其子類
	    // 不行
	    //Collection<? extends Animal> c9 = new ArrayList<Object>();
		// 可以
		Collection<? extends Animal> c10 = new ArrayList<Animal>();
		// 可以
		Collection<? extends Animal> c11 = new ArrayList<Dog>();
		// 可以
		Collection<? extends Animal> c12 = new ArrayList<Cat>();

		// ? super E:向上限定,E及其父類
		Collection<? super Animal> c13 = new ArrayList<Object>();
		Collection<? super Animal> c14 = new ArrayList<Animal>();
		// Collection<? super Animal> c15 = new ArrayList<Dog>();
		// Collection<? super Animal> c16 = new ArrayList<Cat>();
	}
	
}

class Animal {
	
}

class Dog extends Animal {
	
}

class Cat extends Animal {
	
}



相關文章