Java泛型——限制泛型型別
阿新 • • 發佈:2019-01-06
前面說到,泛型可以是任意型別,但有時候需要加以限制才安全;
先建一個父類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類的子類,都可以執行輸出;
但要是換成其他的:
直接編譯報錯,我們發現這時候的泛型類加了限制,其他的類不行;