2013-08-19 15 views
6

アノテーション内でクラスの単純な名前を使用することはできますか?私の目的は、クラスを含むJNDI名を使用して注入のコンパイル時の安全性を得ることです。 (私が何をしたいのか、これはコンパイル時に失敗したの)アノテーション属性としてのJavaクラス名

例:

@EJB(mappedName = "java:module/" + MyService.class.getSimpleName()) 
private MyService myService; 

class.getSimpleNameは()の注釈では動作しない、実行時に解決しているようです。何とか定数として取得できますか?

答えて

0

あなたが持っている方法ではありません。これはAOP技術で行うことができます。しかし、

@EJB(mappedName = "java:module/" + MyService.class.getSimpleName()) 
private MyService myService; 

このコードでは、「MyService」という1つの値しか持てないようです。それは動的に変化することはないので、なぜそれを動的に評価したいのですか?

+3

私はある時点でこのクラスの名前を変更すると、コンパイル時の安全を願っています。文字列は手動で変更する必要がありますが、クラス名への参照は自動的にリファクタリングされるか、コンパイルタイマーエラーが発生します。 –

関連する問題