首页  >  问答  >  正文

关于java中的invoke反射过程几点疑惑

巴扎黑巴扎黑2762 天前766

全部回复(2)我来回复

  • 黄舟

    黄舟2017-04-18 10:40:11

    1.这个是泛型Class<?> c = A.class ?可以是任意类型 就比如ArrayList array = new ArrayList(); array.add(1);可以array.add("1");也可以但是你放到了这个ArrayList中的数据类型明显就乱了 这样的数据不安全没有价值 所以必须如下ArrayList<String> array=new ArrayList<String>(); 这时候你的array.add(1);就会报错 不可以存放int 类型的数据
    2.编译不是报错是警告 warn error 是不一样的
    3

    如图修改后就参数对应就没有警告了

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:40:11

    其实这么写就可以了。

    public static void main(String[] args) {
            A a1 = new A();
            Class<?> c = A.class;
            try {
                Method m = c.getMethod("print", int.class, int.class);
                Object o = m.invoke(a1, 10, 20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    为什么传Integer[]会有警告,因为参数类型是Object...

    回复
    0
  • 取消回复