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