您的位置:首页 > 其它

利用反射越过泛型检查

2016-08-11 14:20 204 查看
1.问题描述

现在有一个List<Integer> list = new ArrayList<Integer>();如何在list中添加String数据???

2.问题解决:

利用反射越过泛型检查,我们知道泛型其实就是在编译的时候检查,其实在class文件中,并没有泛型的存在,所以我们可以利用泛型来跳过编译的检查

3.代码:

java代码:

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class GenericDemo {
public static void main(String[] args) throws Exception {
//利用反射越过泛型检查,因为在。clas文件中泛型根本就不存在,默认Object
//所以得到.class文件就可以越过泛型
List<Integer> list = new ArrayList<Integer>();

//得到ArrayList的配置文件
Class clazz = Class.forName("java.util.ArrayList");
//得到ArrayList的add()方法
Method method = clazz.getMethod("add",Object.class);
//调用方法
method.invoke(list, "I'm String");
//打印结果
System.out.println(list);
}
}
结果:

[I'm String]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型