泛型高级通配符

Posted 化身孤岛的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型高级通配符相关的知识,希望对你有一定的参考价值。

【代码实现】

1 package com.hxl;
2 
3 public class Animal {}
4 
5 class Dog extends Animal {}
6 
7 class Cat extends Animal {}
 1 package com.hxl;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 public class Test {
 7 
 8     public static void main(String[] args) {
 9         // 这里不报错的条件是,后者类型参数满足前者类型参数要求!!
10         // Collection类型参数若明确写,则必须与ArrayList类型参数保持一致
11         // 可以偷个懒,写?替代ArrayList类型参数
12         Collection<Animal> c1 = new ArrayList<Animal>();
13         Collection<?> c2 = new ArrayList<Cat>();
14         Collection<?> c3 = new ArrayList<Dog>();
15 
16         // ? extends E,表示E本身及它的所有子类
17         // Collection<? extends Animal> c4 = new ArrayList<Object>(); 报错是因为Object不是Animal的子类!
18         Collection<? extends Animal> c5 = new ArrayList<Animal>();
19         Collection<? extends Animal> c6 = new ArrayList<Dog>();
20 
21         // ? super E,表示E本身及它的所有层次的父类
22         Collection<? super Dog> c7 = new ArrayList<Object>();
23         Collection<? super Dog> c8 = new ArrayList<Animal>();
24         Collection<? super Dog> c9 = new ArrayList<Dog>();
25         //Collection<? super Dog> c9 = new ArrayList<Cat>(); 报错是因为Cat不是Dog的父类!
26     }
27 }

 

以上是关于泛型高级通配符的主要内容,如果未能解决你的问题,请参考以下文章

泛型高级之通配符

java 16-8 泛型高级之通配符

Java高级——泛型

Java入门 - 高级教程 - 03.泛型

Java入门 - 高级教程 - 03.泛型

泛型