以下がコンパイルされる理由を知りたい:
Locale aLocale = new Locale.Builder().setLanguage("trollolo").setRegion("CA").build();
System.out.println(aLocale.getLanguage());
「トロロロ」は言語ではないので。実行時例外を返さないのに、呼び出したときに「trollolo」が返されるのはgetLanguage()
なぜですか?
これは許可された動作です。javadocから
Builder は、個々のフィールドが構文要件を満たしている (整形式である) かどうかのみをチェックし、値自体は検証しません。
構文 (IETF BCP 47) は、言語を識別するためのタグで定義されています。