通配符

1.在没有通配符的时候

下面的a方法相当于重复定义,报错

/   public void a(List<Object> list){
//
//   }
//   public void a(List<String> list){
//
//   }
//   public void a(List<Integer> list){
//
//   }

2引入通配符

public static void main(String[] args) {
  List<Object> list1 = new ArrayList<>();
  List<String> list2 = new ArrayList<>();
  List<Integer> list3 = new ArrayList<>();
  List<?> list = null;
  list=list1;
  list=list2;
  list=list3;
}

发现:A和B是子类父类的关系,G<A>和G<B>不存在子类父类关系,是并列的

加入通配符?后G<?>就变成了G<A>和G<B>的父类

使用通配符

package com.wangg;
?
import com.sun.org.apache.xerces.internal.xs.datatypes.ObjectList;
import sun.awt.util.IdentityArrayList;
?
import java.util.ArrayList;
import java.util.List;
?
public class Dome06 {
//   public void a(List<Object> list){
//
//   }
//   public void a(List<String> list){
//
//   }
//   public void a(List<Integer> list){
//
//   }
  public void a(List<?> list){
    //内部遍历的时候用Object类型,不用?
    for (Object b:list){
        System.out.println(b);
    }
?
  }
}
class Dome1q{
  public static void main(String[] args) {
    Dome06 t = new Dome06();
    t.a(new ArrayList<ObjectList>());
    t.a(new ArrayList<String>());
    t.a(new ArrayList<IdentityArrayList>());
?
  }
}

通配符

上一篇:puppet 常见错误解释及解决方法


下一篇:一本通1281.最长上升子序列 题解 动态规划