どのように私は、Javaのメソッドから呼び出し側のクラスオブジェクトを得ることができますか?

FranAguiar:

私はからのメソッドやクラス名を取得することができます知っているStackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();が、それは私が欲しいものではありません。私は、クラスオブジェクトをしたいので、私は彼のインタフェース、注釈などにアクセスすることができます...

可能です? Class<?> classObject = getCallerClass();

私はこの質問を見たが、それはただのクラス名です。

Javaで発信者クラスを取得する方法

編集:今、私はクラスをこのように渡しています。

someService.dummyMethod(foo1, foo2, new Object(){}.getClass());

  someService(String foo1, int foo2, Class<?> c) {
    // stuff here to get the methodname, 
    // the interface of the class and an annotation from the interface.
}

私は、異なるクラスのロットからsomeServiceを呼び出し、もし私がこの方法を継続することができませんが、実行時に、発信者のクラスを取得する方法があれば、私はその方法を好みます。

Zabuza:

あなたのリンクの質問のコードを使用してクラス名を取得します:どのようにJavaでの発信者クラスを取得します

そして、ここからのコードを使用して、クラスを取得するために、クラス名を使用します。その名前でクラスを取得

完全なコード:

String callerName = Thread.currentThread().getStackTrace()[2].getClassName();

try {
    Class<?> caller = Class.forName(callerName);
    // Do something with it ...
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

(コミュニティの答えは、唯一以来、既存の回答のミックス)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222571&siteId=1
おすすめ