java.lang.Object
java.util.Locale.Builder
- 封装类:
-
Locale
Builder
用于从setter配置的值构建Locale
的实例。与Locale
构造函数或Locale.of()
工厂方法不同,Builder
会检查由setter配置的值是否满足Locale
类定义的语法要求。从Builder
获取的Locale
对象是格式良好的,并且可以转换为格式良好的IETF BCP 47语言标记而不会丢失信息。
- 实现注意事项:
-
Locale
类对变体没有提供任何语法限制,而BCP 47要求每个变体子标记为5到8个字母数字或一个数字后跟3个字母数字。方法setVariant
对不满足此限制的变体抛出IllformedLocaleException
。如果需要支持这样的变体,请使用Locale.of(String, String, String)
。但是,请记住,通过这种方式获取的Locale
对象在转换为BCP 47语言标记时可能会丢失变体信息。以下示例显示如何使用
Builder
获取Locale
对象。Locale aLocale = new Locale.Builder().setLanguage("sr").setScript("Latn").setRegion("RS").build();
构建器可以重用;
clear()
将所有字段重置为默认值。 - 自 JDK 版本:
- 1.7
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddUnicodeLocaleAttribute
(String attribute) 添加Unicode语言环境属性,如果尚未存在,则不起作用。build()
返回从此构建器设置的字段获取的Locale
实例。clear()
将构建器重置为初始的空状态。将扩展重置为初始的空状态。removeUnicodeLocaleAttribute
(String attribute) 删除Unicode语言环境属性,如果存在,则不起作用。setExtension
(char key, String value) 为给定键设置扩展。setLanguage
(String language) 设置语言。setLanguageTag
(String languageTag) 重置Builder以匹配提供的IETF BCP 47语言标记。重置Builder
以匹配提供的locale
。设置地区。设置脚本。setUnicodeLocaleKeyword
(String key, String type) 为给定键设置Unicode语言环境关键字类型。setVariant
(String variant) 设置变体。
-
Constructor Details
-
Builder
public Builder()构造一个空的Builder。所有字段、扩展和私有使用信息的默认值均为空字符串。
-
-
Method Details
-
setLocale
重置Builder
以匹配提供的locale
。丢弃现有状态。必须确保区域设置的所有字段都是格式良好的,参见
Locale
。具有任何格式不良字段的区域设置将导致抛出
IllformedLocaleException
,除了出于兼容性原因接受以下三种情况:- Locale("ja", "JP", "JP")被视为"ja-JP-u-ca-japanese"
- Locale("th", "TH", "TH")被视为"th-TH-u-nu-thai"
- Locale("no", "NO", "NY")被视为"nn-NO"
- 参数:
-
locale
- 区域设置 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果locale
具有任何格式不良字段。 -
NullPointerException
- 如果locale
为null。
-
setLanguageTag
重置Builder以匹配提供的IETF BCP 47语言标记。丢弃现有状态。null和空字符串会导致构建器重置,类似于clear()
。在处理之前,遗留标记(参见Locale.forLanguageTag(java.lang.String)
)将被转换为它们的规范形式。否则,语言标记必须是格式良好的(参见Locale
),否则将抛出异常(与Locale.forLanguageTag
不同,后者只会丢弃标记的格式不良部分和后续部分)。- 参数:
-
languageTag
- 语言标记 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果languageTag
格式不良 - 参见:
-
setLanguage
- 参数:
-
language
- 语言 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果language
格式不良
-
setScript
- 参数:
-
script
- 脚本 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果script
格式不良
-
setRegion
设置地区。如果地区为null或空字符串,则在此Builder
中删除地区。否则,地区必须是格式良好的,否则将抛出异常。典型的地区值是两个字母的ISO 3166代码或三位数字的UN M.49区域代码。
从
Builder
获取的Locale
中的国家值始终被规范化为大写。- 参数:
-
region
- 地区 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果region
格式不良
-
setVariant
设置变体。如果变体为null或空字符串,则在此Builder
中删除变体。否则,它必须由一个或多个格式良好的子标记组成,否则将抛出异常。注意:此方法检查
variant
是否满足IETF BCP 47变体子标记的语法要求,并将值规范化为小写字母。但是,Locale
类不对变体施加任何语法限制,Locale
中的变体值区分大小写。要设置这样的变体,请使用Locale.of(String, String, String)
。- 参数:
-
variant
- 变体 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果variant
格式不良 - 参见:
-
setExtension
为给定键设置扩展。如果值为null或空字符串,则删除扩展。否则,扩展必须是格式良好的,否则将抛出异常。注意:键
UNICODE_LOCALE_EXTENSION
('u')用于Unicode语言环境扩展。为此键设置值将用定义在扩展中的值替换任何现有的Unicode语言环境键/类型对。注意:键
PRIVATE_USE_EXTENSION
('x')用于私有使用代码。为了格式良好,此键的值只需具有一个到八个字母数字字符的子标记,而不是一般情况下的两到八个。- 参数:
-
key
- 扩展键 -
value
- 扩展值 - 返回:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果key
非法或value
格式不良 - 参见:
-
setUnicodeLocaleKeyword
为给定键设置Unicode语言环境关键字类型。如果类型为null,则删除Unicode关键字。否则,键必须为非null,键和类型必须是格式良好的,否则将抛出异常。键和类型将转换为小写。
注意:通过
setExtension(char, java.lang.String)
设置'u'扩展将用扩展中定义的所有Unicode语言环境关键字替换。- 参数:
-
key
- Unicode 语言环境键 -
type
- Unicode 语言环境类型 - 返回值:
- 此构建器。
- 抛出:
-
IllformedLocaleException
- 如果key
或type
格式不正确 -
NullPointerException
- 如果key
为null - 参见:
-
addUnicodeLocaleAttribute
添加一个Unicode语言环境属性,如果尚未存在,则不起作用。属性不能为空且必须是格式正确的,否则将抛出异常。- 参数:
-
attribute
- 属性 - 返回值:
- 此构建器。
- 抛出:
-
NullPointerException
- 如果attribute
为null -
IllformedLocaleException
- 如果attribute
格式不正确 - 参见:
-
removeUnicodeLocaleAttribute
移除一个Unicode语言环境属性,如果存在,则不起作用。属性不能为空且必须是格式正确的,否则将抛出异常。用于移除的属性比较不区分大小写。
- 参数:
-
attribute
- 属性 - 返回值:
- 此构建器。
- 抛出:
-
NullPointerException
- 如果attribute
为null -
IllformedLocaleException
- 如果attribute
格式不正确 - 参见:
-
clear
将构建器重置为初始的空状态。- 返回值:
- 此构建器。
-
clearExtensions
将扩展重置为初始的空状态。语言、脚本、地区和变体保持不变。- 返回值:
- 此构建器。
- 参见:
-
build
返回从此构建器设置的字段获取的Locale
实例。在构造语言环境时,将应用
Locale.forLanguageTag(java.lang.String)
中列出的转换。(在setLanguageTag(java.lang.String)
中处理传统标签。)- 返回值:
- 一个语言环境。
-