轉自:
http://www.java265.com/JavaCourse/202204/3135.html
下文筆者將講述泛型通配符中問號的功能簡介說明,如下所示:
當在泛型類或介面中,泛型型別不確時, 此時我們可以使用 通配符<?> 注意事項: 當我們使用通配符后,其很多型別需使用Object型別
例:
public class GenericMethodTest {
public static void main(String[] args) {
ArrayList<User> list1 = new ArrayList<>();
list1.add(new User("毛曉琴", 18));
list1.add(new User("張小琴", 19));
list1.add(new User("張雅", 20));
printCollection(list1);
ArrayList<Animal> list2 = new ArrayList<>();
list2.add(new Animal("貓貓-1",88));
list2.add(new Animal("貓貓-2",99));
printCollection(list2);
}
public static void printCollection(Collection<?> c) {
for (Object obj : c){
System.out.println(obj);
}
}
}
泛型上下限
泛型的上限
型別名稱 <? extends 類 > 物件名稱 只能接收該型別及其子類
泛型的下限
型別名稱 <? super 類 > 物件名稱 只能接收該型別及其父型別
例:
上限
public class Test {
public static void main(String[] args) {
ArrayList<Person> list1 = new ArrayList<>();
printCollection(list1);
ArrayList<Student> list2 = new ArrayList<>();
printCollection(list2);
ArrayList<Teacher> list3 = new ArrayList<>();
printCollection(list3);
// ArrayList<Animal> list4 = new ArrayList<>();
// printCollection(list4);
}
// 定義一個方法 :
public static void printCollection(Collection<? extends Person> c) {
for (Person p : c) {
System.out.println(p);
}
}
}
下限
public class Test {
public static void main(String[] args) {
ArrayList<ArmyDog> list1 = new ArrayList<>();
printCollection(list1);
ArrayList<Dog> list2 = new ArrayList<>();
printCollection(list2);
ArrayList<Animal> list3 = new ArrayList<>();
printCollection(list3);
/*
ArrayList<Cat> list4 = new ArrayList<>();
printCollection(list4);
ArrayList<Wolf> list5 = new ArrayList<>();
printCollection(list5);
*/
}
// 方法 :
public static void printCollection(Collection<? super ArmyDog> c) {
for (Object obj : c) {
System.out.println(obj);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499850.html
標籤:其他
上一篇:Allure的簡單使用
下一篇:SpringBoot(15)ORM ( Object Relation Mapping )和JPA—Java持久層API
