前提・実現したいこと
Java SE8 Gold 受験に向け、勉強しています。
ListResourceBundleクラスを継承する際、
サブクラスのアクセス修飾子:「デフォルト」⇒実行時エラーが発生。
サブクラスのアクセス修飾子:「public」⇒正常終了。
なぜデフォルトだと対象リソースファイルを見つけることができなくなるのでしょうか。
発生している問題・エラーメッセージ
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name resourcebundlesample.MyResource, locale ja_JP at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1573) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1396) at java.util.ResourceBundle.getBundle(ResourceBundle.java:854) at resourcebundlesample.Main.main(Main.java:21)
該当のソースコード
Java
1package resourcebundlesample; 2 3import java.util.ListResourceBundle; 4 5class MyResource extends ListResourceBundle { 6 7 protected Object[][] getContents() { 8 Object[][] contents = { 9 { "send", "送信" }, 10 { "cancel", "取消" } 11 }; 12 return contents; 13 } 14}
Java
1package resourcebundlesample; 2 3import java.util.Locale; 4import java.util.ResourceBundle; 5 6public class Main { 7 8 public static void main(String[] args) { 9 10 /** 11 * ListResourceBundle Sample1 12 */ 13 14 Locale japan = Locale.getDefault(); 15 Locale us = new Locale("en", "US"); 16 Locale[] locArray = {japan,us}; 17 18 for(Locale locale : locArray) { 19 20 ResourceBundle obj1 = ResourceBundle.getBundle("resourcebundlesample.MyResource", locale); 21 22 System.out.println("send : " + obj1.getString("send")); 23 System.out.println("cancel : " + obj1.getString("cancel")); 24 } 25} 26}
補足情報(FW/ツールのバージョンなど)
Java version 1.8.0_172
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/02 14:57