繁体   English   中英

带有2D数组的Java中的反射

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM