Java では、Java EE (CDI) プロキシの元のクラス オブジェクトやクラス名をどのように取得しますか?
プロキシ インスタンスで使用getName()
する場合、返される名前は次のようになります。
com.company.employeemgmt.EmployeeManager$Proxy$_$$_WeldSubclass
Java SE (7) または EE (6) に、プロキシされていない元のクラス インスタンスまたはその名前を返す機能はありますか?
私は欲しい:
com.company.employeemgmt.EmployeeManager
もちろん、単純に文字列操作を使用することもできますが、そのような機能が既に Java (EE) に組み込まれているかどうかを知りたいです。
java.reflect.Proxy
プロキシを検出するために使用できる が既に見つかりました。
public static void doSomething( Class<? implements Serializable> managerClass )
{
if ( Proxy.isProxyClass( managerClass ) )
{
// unproxy how?
managerClass = managerClass.getUnproxiedClass();
}
// delegate
doSomething( managerClass.getName() );
}
public static void doSomething( String prefix )
{
// do real work
...
}
...、しかし、元のクラスをどのように逆参照しますか?
アップデート:
秘訣はアクセスMyUtil.doSomething( EmployeeManager.class )
(または )ですが、このコードは手動で変更せずにコピーできるため、すべてのクライアントから(または )MyUtil.doSomething( EmployeeManager.class.getName() )
を使用/渡したいと思います。MyUtil.doSomething( this.getClass() )
MyUtil.doSomething( this.getClass().getName() )