0

以下がコンパイルされる理由を知りたい:

Locale aLocale = new Locale.Builder().setLanguage("trollolo").setRegion("CA").build();
System.out.println(aLocale.getLanguage());

「トロロロ」は言語ではないので。実行時例外を返さないのに、呼び出したときに「trollolo」が返されるのはgetLanguage()なぜですか?

4

1 に答える 1

1

これは許可された動作です。javadocから

Builder は、個々のフィールドが構文要件を満たしている (整形式である) かどうかのみをチェックし、値自体は検証しません。

構文 (IETF BCP 47) は、言語を識別するためのタグで定義されています。

于 2013-08-23T12:44:45.137 に答える