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 に答える