如何通过反射获取这个Method对象?
这是类:
public class Foo {
public void bar(Integer[] b) {
}
}
现在我尝试通过反射获取此方法:
Class cls = Foo.class;
Class[] types = { /* what is here */ };
cls.getMethod("bar", types);
如何创建此“类型”?
This is the class:
public class Foo {
public void bar(Integer[] b) {
}
}
Now I'm trying to get this method via reflection:
Class cls = Foo.class;
Class[] types = { /* what is here */ };
cls.getMethod("bar", types);
How to create this "type"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Integer[].class
- 这是整数数组的类文字。如果您动态需要它,可以使用Class.forName("[Ljava.lang.Integer;")
正如 David 所说。如果您不知道确切的类型,可以调用
getMethods()
,迭代返回的数组并比较名称。Spring 有一个实用程序类
ReflectionUtils
,其中有findMethod(..)
可以执行此操作。Integer[].class
- this is the class literal for the integer array. If you need it dynamically, you can useClass.forName("[Ljava.lang.Integer;")
as David noted.If you don't know the exact types, you can call
getMethods()
, iterate the returned array and compare names.Spring has an utility class
ReflectionUtils
, which havefindMethod(..)
that do this.哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
blah blah blah blah blah blah
有点愚蠢的是,
Class
没有方法给出相应的数组类,只能反过来。这里有一个解决方法:使用这个方法你可以写
当然,如果你可以写
Integer.class
,你也可以写Integer[].class
。因此,只有当您知道您的方法采用某个类的数组(您只能将其作为类对象获取)时,这才有用,否则请使用 Bozho 给出的答案。It is a bit stupid that
Class
has no method to give the corresponding array class, only the other way around. Here is a workaround:With this method you could write
Of course, if you can write
Integer.class
, you could also writeInteger[].class
. So this is only useful if you know your method takes an array of some class which you only get as a class object, otherwise use the answers given by Bozho.