java反射和泛型趣味多

场景是这样的:

    定义了一个Integer类型的list,然后想往这个集合中添加一个String对象,你该如何解决呢?

分析:

    如果直接使用list.add()方法,肯定会报错的,因为有泛型的约束。换言之就是:编译不通过。

解决:

    这时就可以想到java中的反射机制,反射可以规避这个编译校验。具体解决的代码如下:

    这里着重强调的是:getMethod的第二个参数,它该应该是该方法接收的原始参数类型

    如果不明白,请思考该处,你就会恍然大悟。

List<Integer> list = new ArrayList<Integer>();
Method method = ArrayList.class.getMethod("add",Object.class);
method.invoke(list, "abc");
System.err.println(list.get(0));


你可能感兴趣的:(java,反射,泛型,String,List)