我对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.
}
}
答案 0 :(得分:2)
首先,反射与调试器不冲突。通常,您可以在方法中放置断点,然后使用反射调用它,调试器将停在那里。
其次,您的代码段中没有反映。 Class.forName()
是动态类加载。反思是在使用obj.getClass().getMethod("myMethod").invoke()
时。
因此,如果您的代码段不起作用,请尝试了解您的环境或代码中的问题。在调用方法之前是否有可能抛出某种异常但是在没有通知的情况下捕获异常?