[英]Reflection in java with 2D arrays
如何在反射中定义2维数组?
int[][] x={ {1,1,2},{1,1,2},{3,3,3}};
Class<?> c= Class.forName("Ex2");
Class nameClassArr = Class.forName("[[I");
Method methodcall1= c.getDeclaredMethod("biggestRect", nameClassArr );
Object invoke = methodcall1.invoke(c, x);
这样,我在编译时会得到警告:
javac testEx2.java
testEx2.java:113: warning: non-varargs call of varargs method with inexact argument type for last parameter;
Object invoke = methodcall1.invoke(c, x);
^
cast to Object for a varargs call
cast to Object[] for a non-varargs call and to suppress this warning
1 warning
和运行错误:
java testEx2
Exception in thread "main" java.lang.NoSuchMethodException: Ex2.biggestRect([[I)
at java.lang.Class.getDeclaredMethod(Unknown Source)
at testEx2.main(testEx2.java:112)
在类Ex2中,我有一个函数“ biggestRect”,其参数为2维数组
不用通过字符串获取int [] []的类名,只需将类对象传递到那里即可。
Method methodcall1= c.getDeclaredMethod("biggestRect", int[][].class );
另请参见此处在使用反射调用方法时,为什么会得到“对象不是声明类的实例”? ,调用的第一个参数
methodcall1.invoke(c, x);
应该是对象实例,而不是类对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.