欺骗反射器

时间:2013-05-02 13:29:04

标签: java

有一段我没写过的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);
        }
    }

我尝试使用它作为类名,但它不起作用,任何想法?我需要某种匿名课程。

不,我无法更改源代码或向系统添加类。我控制的唯一内容是类的名称,方法的名称和其余的参数。

1 个答案:

答案 0 :(得分:0)

  

我控制的唯一内容是类的名称,方法的名称和其他参数。

然后是答案:

  

没有办法创建一个类型并在那里使用它?