0

私の Java プロジェクトでは、messages.propertiesファイルに外部化された一連の文字列があります。それぞれMessages.javaのファイルには、同じ数の public static String 型の属性が含まれていたので、それらの外部化されたテキストにアクセスできました。

getString次に、定数の名前を引数として受け取り、必要なテキストを返す というメソッドを実装しました。この方法では、ファイル内ですべての public static Strings 型属性を宣言する必要はありませんMessages.java

しかし、これを行った後、ログは「 NLS 未使用メッセージ」メッセージでいっぱいになりました。

これらの警告メッセージがログに記録されないようにする方法があるかどうか知っていますか?

前もって感謝します。

4

3 に答える 3

5

あなたのMessagesクラス - 拡張しているように聞こえますorg.eclipse.osgi.util.NLS

この場合、要件を満たすように設計されています。

  • メッセージが存在することをコンパイル時にチェックします。
  • キーと値の両方を含むマップのメモリ使用を避けるため (これは、リソース バンドル アプローチの場合に当てはまります)。
  • 優れた i18n サポート。

つまり、NLS は、Message.staticVariableの値に、staticVariablemessages.properties で見つかったの値を取り込みます。

Messages.java警告ログは、とファイルの間の不一致に関する情報を提供しmessages.propertiesます。

あなたのgetString()方法はNLSの利点をまったく使用していないように聞こえるので、他の人が示唆しているように、ResourceBundleを使用する方が良いかもしれません.

于 2009-01-07T12:58:06.860 に答える
3

Messages は、あなたが作成したクラスのように聞こえます。JDK 6 の javadoc には表示されないためです。

java.util.ResourceBundle を再発明しようとしたようです。代わりにそれを使用して、クラスを捨てることをお勧めします。I18N を適切に処理できるという追加の利点があります。

クラスの公開静的メッセージ キーをハードコーディングする価値はありません。それはあなたが維持しなければならないもう一つのことです. あなたが適切に行っていることを理解できれば、あなたのメッセージを破棄し、代わりに ResourceBundle を使用します。

于 2009-01-07T12:39:52.293 に答える