0

我对 Java 反射不是很擅长,我正在尝试调试一段使用大量反射的丑陋代码。我在一些应该调用的方法上放置了一个断点,但是当我执行程序时代码从不暂停。因此,这使我相信在 Eclipse(Windows 7 上的 Indigo)中运行时使用反射运行方法会忽略断点。

谁能证实这一点?我在下面提供了一个示例,尽管由于我不知道如何使用反射执行特定于类的方法,因此它不起作用,但我希望它可以澄清我在问题中提出的问题:

public static void main(String[] args)
{
    try
    {
        Class test = Class.forName("Test");

        test.runMethodDoSomething();
    }
    catch (ClassNotFoundException e)
    {
        e.printStackTrace();
    }
}

public static class Test
{
    public void doSomething()
    {
        // Place breakpoint here.
    }
}
4

1 回答 1

4

首先,反射与调试器不冲突。通常,您可以在方法中放置断点,然后使用反射调用它,调试器将停在那里。

其次,您的代码片段中没有反射。Class.forName()是动态类加载。反射是当你使用obj.getClass().getMethod("myMethod").invoke().

因此,如果您的代码片段不起作用,请尝试了解您的环境或代码中的问题。在调用方法之前是否有可能引发某种异常,但在没有通知的情况下捕获了异常?

于 2012-10-01T19:32:54.403 回答