进阶day02-泛型通配符的使用(了解)

This commit is contained in:
2026-01-31 14:36:38 +08:00
parent 6d0a68cf23
commit 6090e411a0
3 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
package com.inmind.generic_advance06;
import java.util.ArrayList;
/*
13.泛型通配符的使用(了解)
当我们想接收一个数据类型,它们的泛型不一致,但是方法中的操作是一致的时候,如果操作????
泛型通配符:?,它的作用是能够匹配任意的泛型类型
*/
public class Demo07 {
public static void main(String[] args) {
//创建3个人
Person p1 = new Person("张三", 18);
Person p2 = new Person("李四", 19);
Person p3 = new Person("王五", 20);
ArrayList<Person> pLists = new ArrayList<>();
pLists.add(p1);
pLists.add(p2);
pLists.add(p3);
//把集合中的对象使用foreach遍历打印打印输出,本质是迭代器
/*for (Person p : pLists) {
System.out.println(p);//将p的toString的方法返回值打印出来
}*/
// showPerson(pLists);
show(pLists);
//创建3个学生
ArrayList<Student> sLists = new ArrayList<>();
sLists.add(new Student("刘备", 17));
sLists.add(new Student("关羽", 16));
sLists.add(new Student("张飞", 15));
/*for (Student s : sLists) {
System.out.println(s);
}*/
show(sLists);
}
//注意ArrayList<Object>参数类型时,泛型是没有多态!!!!
public static void show(ArrayList<?> list){
for (Object o : list) {
System.out.println(o);
}
}
/* public static void showPerson(ArrayList<Person> list){
for (Person person : list) {
System.out.println(person);
}
}
public static void showStudent(ArrayList<Student> list){
for (Student s : list) {
System.out.println(s);
}
}*/
}

View File

@@ -0,0 +1,19 @@
package com.inmind.generic_advance06;
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}

View File

@@ -0,0 +1,16 @@
package com.inmind.generic_advance06;
public class Student extends Person{
public Student(String name, int age) {
super(name, age);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}