ホームページ >Java >&#&チュートリアル >Java で現在実行中のメソッドの名前を取得するにはどうすればよいですか?
Java で現在のメソッドの名前を取得する方法
現在実行中のメソッドの名前を取得すると、デバッグやログ記録に役立ちます。援助。 Java はこれを直接行う方法を提供していませんが、使用できる賢いトリックがあります。
匿名内部クラスとリフレクション
このトリックには、匿名の内部クラスとリフレクションを使用してその外側のメソッドにアクセスします。次のコードは、この手法を示しています。
String name = new Object() {}.getClass().getEnclosingMethod().getName();
このコードは、匿名の内部クラスを作成し、getEnクロージングメソッド() を使用してその外側のメソッドを取得します。次に、囲んでいるメソッドの名前が getName() を使用して取得されます。
パフォーマンスに関する考慮事項
この手法は機能しますが、パフォーマンスに一定の影響を及ぼします。各呼び出しにより、匿名の内部クラスと未使用のオブジェクト インスタンスの作成がトリガーされます。これにより、特にこのトリックが頻繁に使用されるシナリオでは、大幅なオーバーヘッドが発生する可能性があります。
拡張デバッグ情報
パフォーマンスの考慮事項にもかかわらず、この手法には利点があります。 getEnクロージングメソッド() メソッドは、注釈やパラメータ名など、メソッドに関する追加情報へのアクセスを提供する java.lang.reflect.Method オブジェクトを返します。これにより、同じ名前のメソッドとオーバーロード シナリオを区別できるようになります。
セキュリティに関する考慮事項
getEnクロージングメソッド() の JavaDoc によると、この手法は次のとおりであることに注意してください。内部クラスは同じクラス ローダーを使用してロードされるため、SecurityException はスローされません。したがって、セキュリティ マネージャーが存在する場合でも、アクセス条件をチェックする必要はありません。
コンストラクターの使用法
getEnクロージングメソッド() は次の目的で使用されることを覚えておくことが重要です。コンストラクターではなくメソッドに関する情報を取得します。コンストラクターの場合は、getEnクロージングConstructor() を使用する必要があります。さらに、getEnクロージングメソッド()は、名前付きメソッドの外側のコードブロックに対してnullを返します。
以上がJava で現在実行中のメソッドの名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。