public String methodCompareToMoreWithTwo(List request, Object object, Object method, Object methodResum) {
}
有个方法是这样的。
我想反射它。应该怎么写。小弟基础较差,研究很久未果。
我知道是方法名,你这种命名习惯让我头疼
我问的是你返回的是什么,返回的类型,和你传入方法的类型是不是一致的
如果是list,命名的时候,最好是这样 xxxList
get(0)你不是从数组中拿出一个元素吗?难道是二维数组?
下面传入的明明是list,能匹配吗
instanof 做类型判断是不是个办法? 问题是一般使用在基本类型上
你带进来的类是自定义的话. 我也没弄过了
[code="java"]import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class T {
public String methodCompareToMoreWithTwo(List request, Object object, Object method, Object methodResum) {
return "Haha";
}
public static void main(String[] args) {
try {
Class<?> c = Class.forName("T");
Object instance = c.newInstance();
Method method = c.getMethod("methodCompareToMoreWithTwo", List.class, Object.class, Object.class, Object.class);
Object res = method.invoke(instance, new ArrayList(), null, null, null);
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
你的写法没问题,
这一句
Class<?> c = Class.forName("T");
改成全路径就可以正常运行了
如果你不想用object可以强转
T instance = (T)c.newInstance();
reflection.invokeMethod(methodWay, [color=red]request.get(0), [/color]new Object[]{request, object, method, methodResum});
public String methodCompareCommon([color=red]List [/color]request, Object object, Object method, Object methodResum) {
}
一个是数组,一个是数组中的一个元素,当然有问题