s-day02-泛型通配符的上下限(受限泛型)(了解)

This commit is contained in:
2026-07-31 11:59:06 +08:00
parent 7e9ae0104d
commit f6a709ff6c
3 changed files with 38 additions and 2 deletions
@@ -5,6 +5,12 @@ import java.util.ArrayList;
/* /*
13.泛型通配符的使用(了解) ? 13.泛型通配符的使用(了解) ?
当我们要接受一个数据类型,它的泛型不一致,要使用泛型通配符,匹配? 当我们要接受一个数据类型,它的泛型不一致,要使用泛型通配符,匹配?
----------------------------------------
格式:
<? extends B> :泛型的类型只能是B类型或者B类型的子类;上限
<? super B> : 泛型的类型只能是B类型或者B类型的父类;下限
*/ */
public class Demo10 { public class Demo10 {
public static void main(String[] args) { public static void main(String[] args) {
@@ -25,9 +31,21 @@ public class Demo10 {
/* /*
ArrayList<Object> 这样写的话是错的,泛型是没有多态的 ArrayList<Object> 这样写的话是错的,泛型是没有多态的
*/ */
public static void showList(ArrayList<?> list){ // public static void showList(ArrayList<?> list){
//受限泛型的上限
public static void showList(ArrayList<? extends Person> list){
for (Person p : list) {
System.out.println(p);
p.show();
p.method();
}
}
//受限泛型的下限
/*public static void showList(ArrayList<? super Student> list){
for (Object o : list) { for (Object o : list) {
System.out.println(o); System.out.println(o);
} }
} }*/
} }
@@ -19,4 +19,12 @@ public class Person {
", age=" + age + ", age=" + age +
'}'; '}';
} }
public void show(){
System.out.println("人类型可以调用的方法");
}
public void method(){
System.out.println("父类非私有功能");
}
} }
@@ -16,4 +16,14 @@ public class Student extends Person{
", name='" + name + '\'' + ", name='" + name + '\'' +
'}'; '}';
} }
@Override
public void show() {
System.out.println("学生重写show");
}
@Override
public void method() {
System.out.println("学生重写method");
}
} }