JAVA - 反射 - 动态泛型擦除

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] 成功反射进来字符串

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值