1. 程式人生 > >反射跳過泛型檢查

反射跳過泛型檢查

ger add () star sys cep object bsp out

 @Test
public void method() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
//創建集合
ArrayList<Integer> list = new ArrayList<>();
//通過對象獲取字節碼對象
Class<? extends ArrayList> aClass = list.getClass();
//反射獲取add ()
Method method = aClass.getMethod("add"
, Object.class);
method.invoke(list,"mlj");
method.invoke(list, "qq");
method.invoke(list, ‘h‘);
System.out.println(list);
//輸出 [mlj, qq, h]

// 分析:反射直接跳過了泛型Integer,list存儲String類型值;
// 結論:泛型只是給編譯器看的,實際的單列集合,雙列集合可以交叉存儲任意引用值
}



反射跳過泛型檢查