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 的
Locale s作为
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 资源束
String s。
|
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
资源束
String
s。的
ResourceBundle.getBundle
工厂方法尝试加载资源包在列表中指定的命令格式。此方法返回的列表中必须至少有一个
String
。预定义的格式
"java.class"
基于类的资源束和
"java.properties"
为
properties-based的。字符串开始的
"java."
留给将来的扩展和不可由应用程序定义的格式。
它并不需要返回一个不可变的(不可修改)List
。然而,返回的List
不能突变后已返回getFormats
。
默认的实现返回FORMAT_DEFAULT
使ResourceBundle.getBundle
工厂方法看起来一流的资源束,然后性质的。
baseName
-资源束的基名称、完全限定的类名
List
包含加载资源包格式
String
s。
NullPointerException
-如果
baseName
是空的
FORMAT_DEFAULT
,
FORMAT_CLASS
,
FORMAT_PROPERTIES
public List<Locale> getCandidateLocales(String baseName, Locale locale)
List
的
Locale
s作为
baseName
和
locale
候选地点。通过调用此方法
ResourceBundle.getBundle
工厂方法每次工厂方法试图找出一个目标
Locale
资源束。
对候选区域的序列也相当于运行时的资源查找路径(也被称为母链),如果候选区域对应的资源束的存在和他们的父母没有被加载的资源束自己定义。列表的最后一个元素必须是一个root locale如果需要有基地束作为母链的终端。
如果给定的区域等于Locale.ROOT
(根部区域),一个List
只包含根Locale
必须返回。在这种情况下,该ResourceBundle.getBundle
工厂方法加载的基础所产生的资源束束。
它并不需要返回一个不可变的(不可修改)List
。然而,返回的List
不能突变后已返回getCandidateLocales
。
默认的实现返回一个List
使用下面描述的规则包含Locale
s。在下面的描述中,L、S、C和V分别代表非空语言、脚本、国家和变体。例如,[我],C代表Locale
具有非空值仅为语言和国家。表格L(“××”)表示(非空)语言值为“×”。所有病例,Locale
s的最终元件值是空字符串被省略。
Locale
,追加候选Locale
s省略最后的分量依次如下:
Locale.ROOT
Locale
,追加候选Locale
s省略最后组成了语言,从国家和不同恢复Locale
生成添加考生:
Locale.ROOT
Locale
下划线,通过省略变subtags逐一产生候选Locale
s,然后将它们与原始列表中的全部变量值的 Locale
s每发生后。例如,如果变异由两subtags V1和V2:
Locale.ROOT
Locale
有语言“zh”(中国)和一个空的剧本的价值,要么“汉斯”(简体)或“老鬼”(传统的)可能会提供,这取决于该国。当国家的“CN”(中国)或“SG”(新加坡),“汉斯”提供。当国家的“香港”(香港中国),“莫”(澳门中国),或“TW”(台湾),“老鬼”提供。对于所有其他国家或当国家是空的,没有脚本提供。例如,对于Locale("zh", "CN")
,候选名单将是:
Locale.ROOT
Locale("zh", "TW")
,候选名单将是:
Locale.ROOT
Locale("no", "NO", "NY")
和Locale("nn", "NO")
代表新挪威语。当一个地区的语言是“NN”,标准的候选名单产生了[ l(NN)],然后下面的候选人说:
Locale.ROOT
Locale("no", "NO", "NY")
,它首先被转化为Locale("nn", "NO")
然后上面的程序是。另外,java语言的“无”作为治疗的同义词bokmåL“NB”挪威。除了单一的情况下,Locale("no", "NO", "NY")
(上述),当输入Locale
有语言的“无”或“NB”,语言代码“不”和“NB”交错的候选人Locale
s,先用请求的语言,然后用它的同义词。例如,Locale("nb", "NO", "POSIX")
生成以下候选名单:
Locale.ROOT
Locale("no", "NO", "POSIX")
会产生相同的列表除了点“否”会出现在相应的地方用“NB”。默认的实现使用了一个ArrayList
,压倒一切的实现可以修改然后返回给调用者。然而,子类不能修改后已返回getCandidateLocales
。
例如,如果给定的baseName
是“信息”,给locale
是Locale("ja", "", "XX")
,然后List
的Locale
s:
现场(“JA”,“”,“XX”)现场(“是”)locale.root返回。如果资源束的“JA”和“
Locale
s被发现,然后运行时资源查找路径(母链)是:
Messages_ja -> Messages
baseName
-资源束的基名称、完全限定的类名
locale
-现场的资源束所需的
List
为给定的
locale
候选人
Locale
s
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.