[code="java"]
package test;
import java.lang.reflect.Method;
public class OtherTest {
public void doTest(OtherTest[] tests){
}
public static void main(String[] args) throws Exception{
Class clazz = Class.forName("test.OtherTest");
Method method = clazz.getDeclaredMethod("doTest", OtherTest[].class);
}
}
[/code]
请问有没办法通过clazz替换掉getDeclaredMethod的第二个入参,上面是写死成OtherTest[].class,但是实际情况下,需要写成通用方式,谢谢。
注:目前采用将入参OtherTest[]修改为一个中间类的方式规避,请不要告知这种解决办法。
只按方法名称查询:
[code="java"]package bluechip.lang;
import java.lang.reflect.Method;
public class TestReflect {
public void doTest(TestReflect[] tests) {
}
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("bluechip.lang.TestReflect");
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (method.getName() == "doTest") {
System.out.println(method);
break;
}
}
}
}[/code]
不知道你想要怎么个通用法? 比如介绍几种场景。
springframework.util.ClassUtils/ReflectionUtils 工具类提供了很多简便方法
而且你应该也知道
public void doTest(OtherTest[] tests){
}
不如
public void doTest(Class<?>... clazz){
更通用。
而且我们也知道Class<?>... clazz这是不可预测的,怎么能做成通用的? 不知道你所说的通用是指什么?
你如果想通过映射获取方法public void doTest(OtherTest[] tests) 肯定最后还是要给死参数类型的
不明白你要的通用指的是啥