有一段 java 代码不是我写的,我无法更改它使用反射器调用类的方法。像这样的东西(我还没有看到代码):
....
params[0] = Something;
....
Class c = Class.forName(Name);
Method m = c.getDeclaredMethod(MethodName, pt);
if (Modifier.isStatic(m.getModifiers()))
{
res = m.invoke(null, params);
}
else
{
obj = c.newInstance();
res = m.invoke(obj, params);
}
....
到目前为止,一切都很好。
我控制类的名称、方法的名称和参数。我可以发送这些的任意组合,但有一个问题:第一个参数是硬编码的,所以我发送的任何参数都附加到 params 数组中。所以该方法必须接受该参数。
我的问题是:有没有办法创建一个类型并在那里使用它?像这样的东西:
public class PrintWrapper {
public static void println(Somethingtype Something, String arg) {
System.out.println(arg);
}
}
我尝试使用它作为类名,但它不起作用,知道吗?我需要某种匿名类或其他东西。
不,我不能更改源代码或向系统添加类。我唯一控制的是类名、方法名和其余参数。