? 通配符,类型不确定时使用,无限定通配符,主要用法如下:
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一起使用。