# Java高级之泛型通配符 **Repository Path**: fpfgitmy_admin/java-high-generic-wildcard ## Basic Information - **Project Name**: Java高级之泛型通配符 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-04-28 - **Last Updated**: 2022-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 通配符的使用 + 使用通配符`?`之后,就不能向其内部添加数据,除了添加`null`之外 ``` package com.felixfei.study.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * @describle 通配符的使用 */ public class GenericTest { // 使用通配符 public static void print(List list) { Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object next = iterator.next(); System.out.println(next); } } public static void main(String[] args) { ArrayList list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); GenericTest.print(list); } } ``` #### 有限制条件的通配符 ``` package com.felixfei.study.test; import com.felixfei.study.model.Person; import com.felixfei.study.model.Student; import java.util.List; /** * @describle 通配符的使用 */ public class GenericTest { public static void main(String[] args) { // ? extends A: G可以作为G和G的父类,其中B是A的子类 // ? super A: G可以作为G和G的父类,其中B是A的父类 List list1 = null; List list2 = null; List list3 = null; List list4 = null; List list5 = null; // 在extends 里面是 小于等于(子父类) 的关系 list1 = list3; list1 = list4; //list1 = list5; // 数据的读取 Person person = list1.get(0); // 在 super 里面是 大于等于(子父类) 的关系 //list2 = list3; list2 = list4; list2 = list5; Object object = list2.get(0); } } ```