Kodrill

Java SE 17 Gold (1Z0-826-JPN) 試験 / ローカライズ ・ 無料問題 5/5

ローカライズ 問題5[リソース・バンドルの使用]

次のコードを実行したときの出力を選んでください。

Main.java
import java.util.*;​public class Main {    public static class Msgs extends ListResourceBundle {        protected Object[][] getContents() {            return new Object[][] {{"hello", "Hello"}, {"bye", "Bye"}};        }    }​    public static class Msgs_fr extends ListResourceBundle {        protected Object[][] getContents() {            return new Object[][] {{"hello", "Bonjour"}};        }    }​    public static void main(String[] args) {        ResourceBundle rb = ResourceBundle.getBundle(Msgs.class.getName(), Locale.FRANCE);        System.out.println(rb.getString("hello") + " " + rb.getString("bye") + " " + rb.getLocale());    }}

選択肢

  • A.Bonjour Bye fr正解
  • B.Bonjour と出力された後、MissingResourceException が発生する
  • C.Bonjour Bye fr_FR
  • D.Hello Bye fr

解説実行して確認済み

ListResourceBundle を継承したクラスは、基底名_言語_国 の名前でリソース・バンドルとして使えます (ここではネストしたクラスなので、基底名は Msgs.class.getName() で取得しています)。fr_FR 用の Msgs_fr_FR はないので、言語だけの Msgs_fr が選ばれ、getLocale() は fr です。Msgs_fr にないキー bye は、親にあたる基底のバンドル Msgs から探されるので Bye になります。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「ローカライズ」の要点を解説記事で読む

「ローカライズ」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。