反射失效:
import java.lang.reflect.Method;
import java.util.ArrayList;
public class IgnoreGeneric {
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList<>();
list.add(2);
list.add(4);
list.add(1);
//通过反射,忽略泛型
Class<?> clazz = list.getClass();
Method method = clazz.getMethod("add",Object.class);
method.invoke(list,"拜拜");
method.invoke(list,new Double(5));
System.out.println(list); // [2, 4, 1, 拜拜, 5.0]
}
}
Method method = clazz.getMethod("add",Object.class);
Object.class表明可以插入任意类型的数据,若换为其他的则会报错。
方法传递失效:
import java.util.ArrayList;
import java.util.List;
public class invalidGeneric {
public static void main(String[] args){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
fuzz(list,"string");
fuzz(list, new Double(3));
System.out.println(list); //[1, 2, string, 3.0]
}
public static void fuzz(List list,Object o){
list.add(o);
}
}