-1

メッセージのデータを取得して出力できるメッセージ クラスを作成する必要があります。問題は、メッセージ クラスで (public static String exc01 ="testErr";) のような静的フィールド値を指定する必要があることです。"testErr"; エラーが発生しました。

Exception in thread "main" java.lang.NullPointerException
    at java.util.PropertyResourceBundle.handleGetObject(Unknown Source)
    at java.util.ResourceBundle.getObject(Unknown Source)
    at java.util.ResourceBundle.getString(Unknown Source)
    at test1.Messages.getString(Messages.java:19)
    at test1.TestMessageClass.main(TestMessageClass.java:8)

1. メッセージ プロパティ ファイルに既にエラー値が含まれている場合、クラス メッセージの静的文字列 exc01 に値を指定する必要があるのはなぜですか?

2.メッセージのすべてのロジックを実行する方が良い/より良い方法はありますか?

そのために、次のようにメッセージクラスを作成しました

package msg;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class Messages {
    private static final String BUNDLE_NAME = "test1.messages"; 
    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    public static String exc01 ="testErr";
    public static String exc02; 

    private Messages() {
    }

    public static String getString(String key) {
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }
}

同じパッケージの下にmessages.propertiesと呼ばれるメッセージ用のファイルがあり、次のメッセージが含まれています

exc01=Failed to create the extension for {0}
exc02=Failed to create the extension

簡単なテストプログラムを作成しました

public class TestMessageClass {
    public static void main(String[] args) {
        System.out.println(Messages.getString("exc01"));
        System.out.println(Messages.getString(Messages.exc01));
    }
}

印刷する

{0} !testErr! の拡張機能を作成できませんでした。

4

1 に答える 1