可以使用集合来定义数组,利用反射获取类中指定的方法, 而Method类中的invoke()允许调用包装在当前method对象中的方法 因此可以直接调用add方法添加字符串元素
invoke(Object obj, Object... args) 参数:obj - 从中调用底层方法的对象 args - 用于方法调用的参数 返回:使用参数 args在obj上指派该对象所表示方法的结果 ``` ####**代码:**import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; /** * 利用反射可以绕过一些编译时的类型检查 * 比如在integer数组中加入一个字符串 * @author: Joker * @date: 2017年1月30日 下午8:15:22 */ public class ReflectDemo { public static void main(String[] args) { // 创建类型为Interger的ArrayList集合 ArrayList arrayList = new ArrayList(); //add方法给list集合中添加元素 arrayList.add(101); arrayList.add(100); arrayList.add(102);
//获取字节码文件对象 Class arrayListClass = ArrayList.class; try {//利用getMethod(String name, Object obj)获取ArrayList类中指定的add方法 Method method = arrayListClass.getMethod("add", Object.class); //直接调用add方法添加字符串元素,返回add方法执行后的结果 method.invoke(arrayList, "helloworld"); } catch (NoSuchMethodException | SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } System.out.println("新集合为:" + arrayList); }}
####**控制台输出:**新集合为:[101, 100, 102, helloworld] “`