1. 程式人生 > >Java泛型——限制泛型型別

Java泛型——限制泛型型別

前面說到,泛型可以是任意型別,但有時候需要加以限制才安全;

先建一個父類Animal;

package Month01.Day05.Demo01;

public class Animal {

	public void print(){
		System.out.println("動物");
	}
}

 再寫兩個子類Dog和Cat;

package Month01.Day05.Demo01;

public class Dog extends Animal{

	public void print(){
		System.out.println("Dog");
	}
}
package Month01.Day05.Demo01;

public class Cat extends Animal{

	public void print(){
		System.out.println("Cat");
	}
}

再寫泛型類

package Month01.Day05.Demo01;

public class fanxing <T extends Animal>{

	private T t;

	public T getT() {
		return t;
	}

	public void setT(T t) {
		this.t = t;
	}

	public fanxing(T t) {
		super();
		this.t = t;
	}
	
	public void print(){
		System.out.println("T的型別是:"+t.getClass().getName());
	}
}

最後測試類:

package Month01.Day05.Demo01;

public class Test {

	public static void main(String[] args) {
		fanxing<Dog> fx=new fanxing<Dog>(new Dog());
		Dog dog=fx.getT(); //返回型別是dog型別
		dog.print();
		
		fanxing<Cat> fx1=new fanxing<Cat>(new Cat());
		Cat cat=fx1.getT();  //返回型別是Cat型別
		cat.print();
		
		fanxing<Animal> fx2=new fanxing<Animal>(new Animal());
		Animal a=fx2.getT();  //返回型別Animal型別
		a.print();
	}
}

輸出結果為:

Dog
Cat
動物

這裡不管是Animal類或者Animal類的子類,都可以執行輸出;

但要是換成其他的:

直接編譯報錯,我們發現這時候的泛型類加了限制,其他的類不行;