public static void main(String[] args) {
try {
List list = new ArrayList<>();
list.add(12345);
//list指定了类型为Integer,不能添加string
//list.add("abcde");
//①利用反射方式修改list类型为Object,并添加abcde串
Class extends List> listClass = list.getClass();
//②获取声明的add方法,指定Object类型
Method addOver = listClass.getDeclaredMethod("add", Object.class);
//③调用执行该方法
addOver.invoke(list, "abced");
System.out.println("list:" + list);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
反射,顾名思义,需要反向操作一波,如上main方法①②③步



