public static class ResourceBundle.Control extends Object
ResourceBundle.Control定义回调方法被调用的方法
ResourceBundle.getBundle厂包加载过程中。换句话说,一个
ResourceBundle.Control与加载资源包的工厂方法。的回调方法的默认实现提供了执行
default behavior工厂方法所必需的信息。
除了回调方法,该toBundleName和toResourceName方法定义主要用于实现回调方法方便。然而,这toBundleName方法可以被重写以在组织和本地化的资源包装提供不同的公约。该方法是toResourceName final避免使用错误的资源和类名分离器。
两个工厂方法,getControl(List)和getNoFallbackControl(List),提供ResourceBundle.Control实例实现的默认包加载过程中常见的变异。
的格式返回的getFormats法和候选的getCandidateLocales方法返回的场所必须符合所有ResourceBundle.getBundle调用相同基束。否则,该ResourceBundle.getBundle方法可以返回意外的束。例如,如果"java.class"被getFormats方法ResourceBundle.getBundle只有"java.properties"第二呼叫的第一个电话,然后调用将返回基于类的一个已被第一次调用缓存中。
一个ResourceBundle.Control实例必须是同时被多个线程使用是线程安全的。ResourceBundle.getBundle不叫ResourceBundle.Control方法同步。该方法的默认实现是线程安全的。
应用程序可以指定ResourceBundle.Control实例返回的getControl工厂方法创建一个子类或从ResourceBundle.Control定制包加载过程。以下是更改默认包加载过程的例子。
例1
下面的代码可以让ResourceBundle.getBundle查基础资源特性。
导入java。利用*;进口静态java使用java. ResourceBundle。控制*;…ResourceBundle束=可以。getbundle(“MyResources”,新的区域(“FR”、“CH”),可以得到控制。控制(format_properties));鉴于
ResourceBundle.getBundle描述在
example资源束,这
ResourceBundle.getBundle呼叫负载
MyResources_fr_CH.properties其母是
MyResources_fr.properties其母是
MyResources.properties。(
MyResources_fr_CH.properties不隐藏,但
MyResources_fr_CH.class是
例2
以下是加载基于XML的束使用Properties.loadFromXML例。
ResourceBundle Rb =可以getbundle(“消息”,新的概念。control() {公示名单
<字符串>
getformats(字符串basename){如果(basename = = null)把新的nullpointerexception();返回数组list(“XML”);}市民ResourceBundle newBundle(字符串basename,现场现场,字符串格式,类装载器装载机,布尔重装)把非法存取异常,instantiationexception,IOException {如果(basename = = null | | locale = = null| |格式= = null | |装载机= = null)把新的nullpointerexception();ResourceBundle束= null;如果(格式。等于(“XML”))字符串方法和资源包名= tobundlename(basename,现场);字符串resourcename = toresourcename(方法和资源包名,格式);InputStream流= null;如果(重新加载)URL =(resourcename)的装载机;如果(网址!=零)openconnection() URLConnection连接URL;如果(连接!=零)/禁用缓存以获得新的数据/ /重装。连接setusecaches(假);流getinputstream() =连接;}}其他{ }流=装载机。getresourceasstream(resourcename);}如果(流!=零)BufferedInputStream双=新的缓冲输入流(流);束=新xmlresourcebundle(BIS);二。();}}返回束;}});…静态类xmlresourcebundle延伸到{私有属性道具;XMLResourceBundle(InputStream流)抛出IOException {新properties()道具=;道具loadfromxml(流);}保护对象handlegetobject(字符串键){返回的道具。getProperty(关键);}公共枚举
<字符串>
getkeys() {…}}
字符串>
字符串>。)
| Modifier and Type | Field and Description |
|---|---|
static List<String> |
FORMAT_CLASS
班上唯一的格式
List含
"java.class"。
|
static List<String> |
FORMAT_DEFAULT
默认的格式
List,其中包含字符串
"java.class"和
"java.properties",在这个阶。
|
static List<String> |
FORMAT_PROPERTIES
只有
List含
"java.properties"格式属性。
|
static long |
TTL_DONT_CACHE
用于不缓存加载的资源束实例的时间常数。
|
static long |
TTL_NO_EXPIRATION_CONTROL
用于禁用缓存中的已加载资源束实例的过期控件的时间常数。
|
| Modifier | Constructor and Description |
|---|---|
protected |
Control()
唯一的构造函数。
|
| Modifier and Type | Method and Description |
|---|---|
List<Locale> |
getCandidateLocales(String baseName, Locale locale)
返回一个
List的
Locales作为
baseName和
locale候选地点。
|
static ResourceBundle.Control |
getControl(List<String> formats)
|
Locale |
getFallbackLocale(String baseName, Locale locale)
返回一个
Locale作为由
ResourceBundle.getBundle工厂方法进一步的资源束搜索逃离现场。
|
List<String> |
getFormats(String baseName)
返回一个
List含格式用于负荷给定的
baseName资源束
Strings。
|
static ResourceBundle.Control |
getNoFallbackControl(List<String> formats)
|
long |
getTimeToLive(String baseName, Locale locale)
返回的生存时间(TTL),受这
ResourceBundle.Control资源束的价值。
|
boolean |
needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)
确定是否过期
bundle缓存中需要重新加载基于加载时间
loadTime或其他标准。
|
ResourceBundle |
newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
实例化一个给定的给定的格式和现场束名称资源束,使用给定的类装载器,如果有必要的话。
|
String |
toBundleName(String baseName, Locale locale)
将给定的
baseName和
locale的包的名称。
|
String |
toResourceName(String bundleName, String suffix)
|
public static final List<String> FORMAT_DEFAULT
getFormats(String)
public static final List<String> FORMAT_CLASS
getFormats(String)
public static final List<String> FORMAT_PROPERTIES
getFormats(String)
public static final long TTL_DONT_CACHE
public static final long TTL_NO_EXPIRATION_CONTROL
public static final ResourceBundle.Control getControl(List<String> formats)
ResourceBundle.Control,
getFormats方法返回指定的
formats。的
formats必须等于一个
FORMAT_PROPERTIES,
FORMAT_CLASS或
FORMAT_DEFAULT。
ResourceBundle.Control实例,该方法返回的是单身和线程安全。
指定FORMAT_DEFAULT相当于实例化ResourceBundle.Control类,除了这个方法返回一个单。
formats -被
ResourceBundle.Control.getFormats方法返回的格式
ResourceBundle.Control支持指定的
formats
null
formats
NullPointerException
IllegalArgumentException -如果
formats是未知的
public static final ResourceBundle.Control getNoFallbackControl(List<String> formats)
ResourceBundle.Control,
getFormats方法返回指定的
formats和
getFallbackLocale方法返回
null。的
formats必须等于一个
FORMAT_PROPERTIES,
FORMAT_CLASS或
FORMAT_DEFAULT。
ResourceBundle.Control实例,该方法返回的是单身和线程安全。
formats -被
ResourceBundle.Control.getFormats方法返回的格式
Locale支持
ResourceBundle.Control支持指定的
formats
null
formats
NullPointerException
IllegalArgumentException -如果
formats是未知的
public List<String> getFormats(String baseName)
List含格式用于负荷给定的
baseName资源束
Strings。的
ResourceBundle.getBundle工厂方法尝试加载资源包在列表中指定的命令格式。此方法返回的列表中必须至少有一个
String。预定义的格式
"java.class"基于类的资源束和
"java.properties"为
properties-based的。字符串开始的
"java."留给将来的扩展和不可由应用程序定义的格式。
它并不需要返回一个不可变的(不可修改)List。然而,返回的List不能突变后已返回getFormats。
默认的实现返回FORMAT_DEFAULT使ResourceBundle.getBundle工厂方法看起来一流的资源束,然后性质的。
baseName -资源束的基名称、完全限定的类名
List包含加载资源包格式
Strings。
NullPointerException -如果
baseName是空的
FORMAT_DEFAULT,
FORMAT_CLASS,
FORMAT_PROPERTIES
public List<Locale> getCandidateLocales(String baseName, Locale locale)
List的
Locales作为
baseName和
locale候选地点。通过调用此方法
ResourceBundle.getBundle工厂方法每次工厂方法试图找出一个目标
Locale资源束。
对候选区域的序列也相当于运行时的资源查找路径(也被称为母链),如果候选区域对应的资源束的存在和他们的父母没有被加载的资源束自己定义。列表的最后一个元素必须是一个root locale如果需要有基地束作为母链的终端。
如果给定的区域等于Locale.ROOT(根部区域),一个List只包含根Locale必须返回。在这种情况下,该ResourceBundle.getBundle工厂方法加载的基础所产生的资源束束。
它并不需要返回一个不可变的(不可修改)List。然而,返回的List不能突变后已返回getCandidateLocales。
默认的实现返回一个List使用下面描述的规则包含Locales。在下面的描述中,L、S、C和V分别代表非空语言、脚本、国家和变体。例如,[我],C代表Locale具有非空值仅为语言和国家。表格L(“××”)表示(非空)语言值为“×”。所有病例,Locales的最终元件值是空字符串被省略。
Locale,追加候选Locales省略最后的分量依次如下:
Locale.ROOTLocale,追加候选Locales省略最后组成了语言,从国家和不同恢复Locale生成添加考生:
Locale.ROOTLocale下划线,通过省略变subtags逐一产生候选Locales,然后将它们与原始列表中的全部变量值的 Locales每发生后。例如,如果变异由两subtags V1和V2:
Locale.ROOTLocale有语言“zh”(中国)和一个空的剧本的价值,要么“汉斯”(简体)或“老鬼”(传统的)可能会提供,这取决于该国。当国家的“CN”(中国)或“SG”(新加坡),“汉斯”提供。当国家的“香港”(香港中国),“莫”(澳门中国),或“TW”(台湾),“老鬼”提供。对于所有其他国家或当国家是空的,没有脚本提供。例如,对于Locale("zh", "CN") ,候选名单将是:
Locale.ROOTLocale("zh", "TW"),候选名单将是:
Locale.ROOTLocale("no", "NO", "NY")和Locale("nn", "NO")代表新挪威语。当一个地区的语言是“NN”,标准的候选名单产生了[ l(NN)],然后下面的候选人说:
Locale.ROOTLocale("no", "NO", "NY"),它首先被转化为Locale("nn", "NO")然后上面的程序是。另外,java语言的“无”作为治疗的同义词bokmåL“NB”挪威。除了单一的情况下,Locale("no", "NO", "NY")(上述),当输入Locale有语言的“无”或“NB”,语言代码“不”和“NB”交错的候选人Locales,先用请求的语言,然后用它的同义词。例如,Locale("nb", "NO", "POSIX")生成以下候选名单:
Locale.ROOTLocale("no", "NO", "POSIX")会产生相同的列表除了点“否”会出现在相应的地方用“NB”。默认的实现使用了一个ArrayList,压倒一切的实现可以修改然后返回给调用者。然而,子类不能修改后已返回getCandidateLocales。
例如,如果给定的baseName是“信息”,给locale是Locale("ja", "", "XX"),然后List的Locales:
现场(“JA”,“”,“XX”)现场(“是”)locale.root返回。如果资源束的“JA”和“
Locales被发现,然后运行时资源查找路径(母链)是:
Messages_ja -> Messages
baseName -资源束的基名称、完全限定的类名
locale -现场的资源束所需的
List为给定的
locale候选人
Locales
NullPointerException -如果
baseName或
locale是
null
public Locale getFallbackLocale(String baseName, Locale locale)
Locale作为由
ResourceBundle.getBundle工厂方法进一步的资源束搜索逃离现场。这种方法被称为从工厂方法每当没有导致资源束的发现已
baseName和
locale,在现场为
ResourceBundle.getBundle或以前的回退现场参数,此方法返回的。
如果没有进一步的回退搜索所需的方法返回null。
默认的实现返回default Locale如果给定的locale不是默认。否则,null返回。
baseName -资源束的基名称、完全限定的类名,
ResourceBundle.getBundle一直无法找到任何资源束(除了基地束)
locale -
Locale,
ResourceBundle.getBundle一直无法找到任何资源束(除了基地束)
Locale回退搜索,或
null如果没有进一步的回退搜索所需的。
NullPointerException -如果
baseName或
locale是
null
public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException
null如果没有给定参数的资源包。如果一个资源包不能被实例化由于意外错误,错误必须抛出一个
Error或
异常而不是简单地返回
null报道。
如果reload标志true,这表明这种方法是因为以前加载资源包已过期。
默认实现实例化一个ResourceBundle如下。
toBundleName(baseName, locale)获得。format是"java.class",由束名称指定的类是通过调用ClassLoader.loadClass(String)加载。然后,通过调用一个ResourceBundle Class.newInstance()实例化。请注意,reload旗是加载默认实现基于资源束类忽略。format是"java.properties",toResourceName(bundlename, "properties")来获得资源名称。如果reload是true,load.getResource来创建一个URLConnection得到URL。这URLConnection用于底层资源加载层disable the caches,并get an InputStream。否则,loader.getResourceAsStream叫到InputStream。然后,一个PropertyResourceBundle与InputStream构造。format既"java.class"也"java.properties",一IllegalArgumentException抛出。baseName -资源束束的基地名称、完全限定的类名
locale -现场的资源束应该实例化
format -资源包格式下载
loader -
ClassLoader使用加载束
reload -标志束重装;
true如果重装过期资源束,
false否则
null如果没有人可以发现。
NullPointerException -如果
bundleName,
locale,
format,或
loader是
null,或者如果
null返回
toBundleName
IllegalArgumentException -如果
format是未知的,或者资源的发现对于给定的参数包含格式错误的数据。
ClassCastException -如果加载的类不能被转换为
ResourceBundle
IllegalAccessException如果类或其默认构造函数不可访问。
InstantiationException -如果一个类的实例化其他原因失败。
ExceptionInInitializerError -如果该方法激发的初始化失败。
SecurityException -如果一个安全管理是新实例和创造是否认。看到
Class.newInstance()详情。
IOException如果阅读使用任何I/O操作资源时发生错误
public long getTimeToLive(String baseName, Locale locale)
ResourceBundle.Control资源束的价值。实时的实时值指定的时间束可以保持在高速缓存中的数量,而不被验证对源数据,从它被构造。值0表示每次从缓存中检索到的一个包必须进行验证。
TTL_DONT_CACHE指定加载资源包不放在缓存中。
TTL_NO_EXPIRATION_CONTROL指定放在没有有效控制缓存加载资源包。
到期的ResourceBundle.getBundle工厂方法只影响束加载过程。即,如果工厂方法在缓存中已发现资源束,工厂方法调用的needsReload方法确定资源包需要重新加载。如果needsReload返回true,缓存的资源绑定实例从缓存中移除。否则,该实例处于缓存,更新最新的TTL该方法返回的值。
所有缓存的资源捆绑都要从运行时环境的内存约束下从缓存中移除。返回一个大的正值并不意味着在缓存中加载加载的资源束。
默认的实现返回TTL_NO_EXPIRATION_CONTROL。
baseName -资源束的到期值基地名称指定。
locale -现场的资源束的到期值指定。
TTL_NO_EXPIRATION_CONTROL禁用的有效控制,或
TTL_DONT_CACHE禁用缓存。
NullPointerException -如果
baseName或
locale是
null
public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)
bundle缓存中需要重新加载基于加载时间
loadTime或其他标准。如果重装需要方法返回
true;
false否则。
loadTime偏移由于
Calendar Epoch毫秒。调用
ResourceBundle.getBundle工厂方法调用此方法用于当前调用的
ResourceBundle.Control实例,在实例中使用的调用最初加载资源包。
默认的实现比较loadTime的资源束源数据的最后修改时间。如果确定源数据已被修改,因为loadTime,true返回。否则,false返回。这个实现假定给定的format是字符串作为文件后缀相同的如果不是一个默认的格式,"java.class"或"java.properties"。
baseName -资源束束的基地名称、完全限定的类名
locale -现场的资源束应该实例化
format -资源包格式下载
loader -
ClassLoader使用加载束
bundle -资源绑定实例已在缓存过期
loadTime -时,
bundle装放在缓存
true如果过期包需要重新加载;
false否则。
NullPointerException -如果
baseName,
locale,
format,
loader,或
bundle是
null
public String toBundleName(String baseName, Locale locale)
baseName和
locale的包的名称。这种方法是从
newBundle和
needsReload方法的默认实现调用。
此实现返回以下值:
“_ basename + +语言+“_”+脚本+“_”+国+“_”+变种哪里
language,
script,
country,和
variant是语言,脚本,国家,和
locale变异值,分别。这是空字符串最后分量值略随着前面的_”。当剧本是空的,剧本的价值略随着前面的_”。如果所有的值是空字符串,则返回
baseName。
例如,如果baseName是"baseName"和locale是Locale("ja", "", "XX"),然后"baseName_ja_ _XX"返回。如果给定的区域Locale("en"),然后"baseName_en"返回。
重写此方法允许应用程序在本地化资源的组织和包装中使用不同的约定。
baseName -资源束的基名称、完全限定的类名
locale -现场的资源包应装
NullPointerException -如果
baseName或
locale是
null
public final String toResourceName(String bundleName, String suffix)
bundleName由
ClassLoader.getResource方法需要在
'/'和附加
'.'和给定的文件
suffix
'.'
bundleName替换所有出现的形式。例如,如果
bundleName是
"foo.bar.MyResources_ja_JP"和
suffix是
"properties",然后
"foo/bar/MyResources_ja_JP.properties"返回。
bundleName -包名称
suffix -后缀的文件类型
NullPointerException -如果
bundleName或
suffix是
null
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.