如何将内部类与 ListResourceBundle 一起使用?



在BankTeller类中,我有3个扩展ListResourceBundle的内部类,即:

  • BankTeller_ja_JP
  • BankTeller_el_GR
  • BankTeller_en_GB

在BankTeller的主要方法中,我想使用这些类。我试过使用

ResourceBundle res = ResourceBundle.getBundle("BankTeller$BankTeller",locale);
ResourceBundle res = ResourceBundle.getBundle("BankTeller.BankTeller",locale);

但两者都给了我以下例外:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name BankTeller$BankTeller, locale el_GR
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at lab10.BankTeller.displayValues(BankTeller.java:16)
at lab10.BankTeller.main(BankTeller.java:12)

如何加载资源包?

如果你想使用嵌套类,你的BankTeller应该是公共静态嵌套类。 我在包 com.java.util 中创建了类 ResourceBundleTest:

class ResourceBundleTest {
@Test
void getBundle_fromNestedStaticClass() {
// given
final Locale locale = new Locale("en", "GB");
// when
final ResourceBundle exampleBundle = ResourceBundle.getBundle("com.java.util.ResourceBundleTest$BankTeller", locale);
// then
assertEquals("Hello World!", exampleBundle.getString("greetings"));
}
public static class BankTeller_en_GB extends ListResourceBundle {
@Override
protected Object[][] getContents() {
return new Object[][]{{"greetings", "Hello World!"}};
}
}
}

最新更新