一般情况下:
package com.xinyu.test;
import com.sun.org.apache.xpath.internal.operations.String;
import java.util.ArrayList;
import java.util.List;
public class TestListAddString {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(1);
list.add(new String("111"));
System.out.println(list);
}
}
我们上面的代码肯定是不能编译通过的,报错如下图:
那么如何实现标题里面的效果呢?
我们可以通过反射获取到add 方法,通过方法的invoke 执行增加String对象。
代码
package com.xinyu.test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class TestListAddString {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(1);
try {
Method add = list.getClass().getDeclaredMethod("add", Object.class);
add.invoke(list,new String("aaa"));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
System.out.println(list);
}
}
运行效果图: