package com.io.fanxing;
public class FanXingArea {
/**
* @Title: main
* People<? extends Dog > p 和 People<? extends Dog > p 应用
* @Description: TODO(描述这个方法的作用)
* 定义泛型的范围,上到父类下到子类
*/
public static void main(String[] args) {
//People<Dog> people=new People<Dog>();
//可以放dog和Labuladuo
fun(new People<Dog>("zhang",20,new Dog("大黄")));
// fun(new People<Labuladuo>());
//这个就会报错
// fun(new People<Animal>());
//只能给dog的父类和本身
funTow(new People<Dog>());
funTow(new People<Animal>());
//这个会报错
// funTow(new People<Labuladuo>());
}
//泛型只能给dog的子类或者本身
public static void fun(People<? extends Dog > p){
System.out.println(p);
}
//泛型只能给dog的父类或者本身
public static void funTow(People<? super Dog > p){
}
}
class People<T>{
String name;
int age;
Animal animal;
public People() {
super();
}
public People(String name, int age, Animal animal) {
super();
this.name = name;
this.age = age;
this.animal = animal;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Animal getAnimal() {
return animal;
}
@Override
public String toString() {
return "People [name=" + name + ", age=" + age + ", animal=" + animal + "]";
}
}
class A{}
class Animal{}
class Dog extends Animal {
private String name;
public Dog() {
super();
}
public Dog(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Dog [name=" + name + "]";
}
}
class Labuladuo extends Dog {
}
Java泛型范围
最新推荐文章于 2024-07-10 22:13:59 发布