【给定一个 ArrayList的一个对象,实现在这个集合中添加一个字符串】对于学习啊反射一个小小的应用
import org.junit.Test;
/*
*给定一个 ArrayList的一个对象,实现在这个集合中添加一个字符串
*/
public class Demo02 {
@Test
public void test01() throws Exception {
ArrayList list = new ArrayList();
// 正常的添加方式,肯定是不行了,因为泛型已经设置为Integer类型的数据
// list.add("123");
//list.add(123);
/*
* 通过查看add的源码可以知道,public boolean add(E e),add传递的参数是E类型(泛型)的,泛型默认的是object
* 在jdk5.0之后,为了安全加入了泛型机制,但是这个泛型机制只是给编译器看的,在运行时还是用的强制类型转化
* 明白了这一点,我们就可以用反射获取ArrayList的class文件,直接调用add方法,传入字符串类型的数据
*/
//获取ArrayList的class文件
Class c = list.getClass();
Method m1 = c.getMethod("add", Object.class);
m1.invoke(list, "你好");
m1.invoke(list, "hello");
System.out.println(list);
}
}
推荐阅读
- 把一个xml节点信息递归的存到map中的方法
- Java 多线程 子线程 交替打印 奇偶数
- J2SE|通过线程按照顺序循环输出ABC n次
- 如何控制线程执行的先后顺序
- weblogic|weblogic——Servlet failed with Exception
- J2SE/JAVA|DOS命令全集
- JVM_自动内存管理机制