Java泛型擦除(泛型反射)

来源:互联网 发布:prim和kruskal算法 编辑:程序博客网 时间:2024/06/14 09:56
package com.sanmao10;import java.lang.reflect.Method;import java.util.ArrayList;public class test_fanxing {    /**     * * ArrayList<Integer>的一个对象,在这个集合中添加一个字符串数据,如何实现呢?     * 泛型只在编译期有效,在运行期会被擦除掉*/    public static void main(String[] args) throws Exception{        ArrayList<Integer> list=new ArrayList<>();        list.add(123);        list.add(321);        //list.add( "www"); 将会报错  为了解决这个问题,我们对其add方法进行反射,讲字符串添加进去        //因为不在编译期 所以泛型无效        Class clazz=Class.forName("java.util.ArrayList");        Method m=clazz.getMethod("add",Object.class); //API add(E e) 参数Object        m.invoke(list,"sanmao");        System.out.println(list);  //[123, 321, sanmao] 成功反射进来字符串    }}
0 0