前面说到,泛型可以是任意类型,但有时候需要加以限制才安全;
先建一个父类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类的子类,都可以运行输出;
但要是换成其他的:
直接编译报错,我们发现这时候的泛型类加了限制,其他的类不行;