拋開實用性叮称,我們只是簡單的去探討一下這個問題漠畜。
List<String>指定了添加到List的對象必須為String類型锭沟,范型約束的產(chǎn)生在編譯階段笼痹,那么我們是否能夠繞過編譯配喳,在運行階段添加一個int類型的數(shù)據(jù)呢酪穿,答案是肯定的。
List<String> list1 = new ArrayList<>();
list1.add("test1");
// 添加int類型數(shù)據(jù)報錯
// list1.add(20);
Class class2 = list1.getClass();
try {
Method method1 = class2.getMethod("add", Object.class);
// 通過反射機制操作list1
method1.invoke(list1, 20);
// 輸出結果[test1, 20]
System.out.println(list1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
以上晴裹。