ソースのストリングの外部化
Eclipse にはソースにハード・コーディングされた文字列をプロパティー・ファイルとして外部化する機能があります。プロジェクトを選択し、メニュー > ソース > ストリングの外部化 で以下のようなウィザードが起動します。
プラグイン・プロジェクトの場合は「Eclipse のストリング外部化機能を使用する」が表示され、チェックの有無により生成されるソースに以下の違いがあります。
チェックなしの場合 (デフォルト)
import java.util.MissingResourceException; import java.util.ResourceBundle; public class Messages { private static final String BUNDLE_NAME = "sampleviewplugin.messages"; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); private Messages() { } public static String getString(String key) { try { return RESOURCE_BUNDLE.getString(key); } catch (MissingResourceException e) { return '!' + key + '!'; } } }
[messages.properties] Hoge.0=文字列1 Hoge.1=文字列2 Hoge.2=文字列3
Java 標準 API のみで構成されるため、プラグイン・プロジェクト以外でも使用することができますが、キーを文字列で指定する必要があります。
チェックありの場合
import org.eclipse.osgi.util.NLS; public class Messages extends NLS { private static final String BUNDLE_NAME = "sampleviewplugin.messages"; public static String Hoge_0; public static String Hoge_1; public static String Hoge_2; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { } }
[messages.properties] Hoge_0=文字列1 Hoge_1=文字列2 Hoge_2=文字列3
Eclipse の NLS クラスを継承したクラスが生成されます。初回フィールド・アクセス時にスタティック・イニシャライザーでプロパティーがロードされ、定数フィールド (不変ではありませんが) に文字列がセットされます。キーを文字列で指定する必要がないため安全です。デフォルトでは「Eclipse のストリング外部化機能を使用する」にチェックが入っていませんが、プラグインの場合、必ずチェックするようにしたほうが良いと思います。