黑马程序员技术交流社区
标题:
反射 关于method中的getMethod与invoke的问题
[打印本页]
作者:
liuch111
时间:
2015-7-18 18:12
标题:
反射 关于method中的getMethod与invoke的问题
错误信息:
警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
[javac] 对于 varargs 调用,应使用 java.lang.Object
[javac] 对于非 varargs 调用,应使用 java.lang.Object[],这样也可以抑制此警告
程序是一样的,在jdk1.4下可以编译通过,但在1.5就不行。上网查了一下,解决办法:
Method method = cls.getMethod( " hashCode " , new Class[ 0 ]); // 编译通过
Method method = cls.getMethod( " hashCode " , null ); // 编译失败
allMethod[i].invoke(dbInstance, new Object[]{}); // 编译通过
allMethod[i].invoke(dbInstance, null ); // 编译失败
复制代码
作者:
liuch111
时间:
2015-7-18 18:14
为什么用null不行了
new Class[0] 与 new Object[]{} 又分别代表什么意思呢?
作者:
liuch111
时间:
2015-7-18 18:20
本帖最后由 liuch111 于 2015-7-18 18:22 编辑
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException,
SecurityException返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。name 参数是一个 String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组。如果 parameterTypes 为 null,则按空数组处理。
官方api1.6中提到的”如果 parameterTypes 为 null,则按空数组处理“ 为何实际用null就报错呢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2