? 通配符,类型不确定时使用,无限定通配符,主要用法如下:
package com.ws.generic; import java.util.ArrayList; import java.util.List; public class generic { public static void main(String[] args) { // 第一种用法 使用形参? List<String> list = new ArrayList<String>(); list.add("abc"); list.add("acc"); test(list); List<Integer> list1 = new ArrayList<Integer>(); list1.add(100); list1.add(98); test(list1); // 第二种方法 声明变量? List<?> list2 = new ArrayList<String>(); // 只能增加null list2.add(null); test(list2); } public static void test(List<?> list){ System.out.println(list); // 只能调用与泛型无法的方法 System.out.println(list.size()); } // 和test感觉效果一样,设计理念不一样吧 public static <T> void test1(List<T> list){ System.out.println(list); System.out.println(list.size()); } } 另外,无限定通配符在创建对象,创建泛型类、接口、方法都不能使用。无限定通配符经常和限定通配符extends,super一起使用。