本帖最后由 无此姓名 于 2014-4-14 02:00 编辑
用反射调用一个类的main方法,main方法的参数为String[],但是为什么invoke中参数需要强转为Object呢
- <p>String[] strArr = {"abc","def"};
- Method methodMain = Arguments.class.getMethod("main", String[].class);
- methodMain.invoke(null, new String[] {"123"});//运行时会抛异常java.lang.IllegalArgumentException: argument type mismatch。查看了API文档invoke(Object obj,Object... args),参数是Object,也就是说只要是Object的子类就是可以接收的,所以我往里传new String[] {"123"},按理说应该是可以的。但是运行时抛异常,原因是类型不匹配,很不解。
- methodMain.invoke(null, (Object)new String[] {"123"}); //需要强转为Object才可以
- </p>
复制代码 |