10

Netbeans 7.1 ベータ版を使い始めたばかりですが、これまで見たことのないタイプのエラーが発生しています。具体的には:

A managed bean with a public field should not declare any scope other than @Dependent.

それが不平を言っているフィールドはpublic static final. 非静的フィールドの制限は理解できますが、これが静的フィールドに許可されない正当な理由が思いつきません。残念ながら、私は自分のコードに定数を入れるのが好きではないので、それらの多くを使用しています。

エディターの余白に赤い点が表示されても、Maven 駆動のビルドは引き続き機能し、GlassFish は期待どおりにアプリケーションを実行します。

では、この問題に関する私の非難は何ですか?静的フィールドを別の場所に移動する必要がありますか、それともこれを処理する別の方法がありますか?

4

2 に答える 2

7

javax.enterprise.inject パッケージ javadocsの引用:

マネージド Bean にパブリック フィールドがある場合は、スコープ @Dependent が必要です。

しかし、これがコンパイルされた場合、Netbeansはそれを警告として報告する必要があるという@BalusCに同意します(そうしますか?)。

とにかく、これらの定数は本当に API の一部ですか? つまり、独自のクラス内以外の場所でそれらにアクセスしますか? そうでない場合は、可視性を非公開にします。(ビューから定数にアクセスする必要がある場合は、プライベート定数のアクセサーを作成することもできます)。はいの場合は、とにかく別の場所に移動することをお勧めします。

于 2011-11-26T01:32:19.720 に答える
4

パブリックフィールド(静的または非静的)はプロキシ可能ではありません-そのため、パブリックフィールドは依存スコープのみになります。これを回避するには、明らかにゲッターメソッドを介してそれらにアクセスできます。

于 2011-11-28T21:24:00.650 に答える