2012-03-13 11 views
1

@Singletonアノテーションを使用してJava EE 6でシングルトンクラスを作成しています。私はコンストラクタを宣言していません。@Singletonクラス私はコンストラクタをプライベートにする必要がありますか?

プライベートコンストラクタを明示的に作成する必要はありますか?

PMDを使用していて、ルールUseSingleton が使用されていることがわかります。私はPMDが@ Singtontアノテーションを理解していないと思いますか?

答えて

4

他の人があなたのシングルトンオブジェクトをインスタンス化しないようにPMDはコンストラクタprivateを作っ推奨しています。 Java EE 6の注釈は認識されません。

この警告は無視しても問題ありません。

+0

コンストラクタをプライベートにしたとき、実行時にクラスをロードする際に問題が発生しました。コンストラクタを削除するには、PMDに警告を表示する方法がありますか、@SuppressWarnings( "PMD") @SuppressWarnings( "PMD.UseSingletone")を使用しようとしましたが、それを拾わなかったため、いくつかの警告の継ぎ目を抑制することはできません。 –

+0

J2EEの場合は、リフレクションによって呼び出すことができるようにコンストラクタをパブリックに保つ必要があります。私はあなたがPMDで警告をどのように抑制するのか分かりません:( –

0

いいえ、Beanクラスに@Singletonを追加してください。

@Singleton 
public class TesterBean { 
    private int testCount = 0; 
    public int getCount() { 
     return testCount++; 
    } 
} 
関連する問題