簡體   English   中英

如何在 ListResourceBundle 中使用內部類?

[英]How do I use inner classes with ListResourceBundle?

在 BankTeller 類中,我有 3 個擴展 ListResourceBundle 的內部類,即,

  • BankTeller_ja_JP
  • BankTeller_el_GR
  • BankTeller_zh_CN

在 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)

如何加載 ResourceBundles?

如果您想使用嵌套類,您的 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!"}};
        }

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM