ResourceBundle.Control 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
ResourceBundle.Control
定义在捆绑加载过程中由工厂方法调用 ResourceBundle#getBundle(String,
Locale, ClassLoader, Control) ResourceBundle.getBundle
的一组回调方法。
[Android.Runtime.Register("java/util/ResourceBundle$Control", DoNotGenerateAcw=true)]
public class ResourceBundle.Control : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle$Control", DoNotGenerateAcw=true)>]
type ResourceBundle.Control = class
inherit Object
- 继承
- 属性
注解
ResourceBundle.Control
定义在捆绑加载过程中由工厂方法调用 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle
的一组回调方法。 换句话说,与 ResourceBundle.Control
工厂方法协作以加载资源捆绑包。 回调方法的默认实现提供了执行默认行为所需的工厂方法所需的信息。
除了回调方法之外, #toBundleName(String, Locale) toBundleName
还主要定义和 #toResourceName(String, String) toResourceName
方法,以便于实现回调方法。 但是, toBundleName
可以重写此方法,以便在组织和打包本地化资源时提供不同的约定。 方法是toResourceName
final
避免使用错误的资源和类名分隔符。
两个工厂方法, #getControl(List)
ResourceBundle.Control
并提供#getNoFallbackControl(List)
实现默认捆绑加载过程的常见变体的实例。
方法返回 Control#getFormats(String) getFormats
的格式和该方法返回 ResourceBundle.Control#getCandidateLocales(String, Locale) getCandidateLocales
的候选区域设置必须在同一基本捆绑包的所有 ResourceBundle.getBundle
调用中保持一致。 否则, ResourceBundle.getBundle
方法可能会返回意外捆绑包。 例如,如果仅 "java.class"
由 getFormats
第一次调用 ResourceBundle.getBundle
的方法返回,并且只 "java.properties"
返回第二次调用,则第二次调用将返回在第一次调用期间缓存的基于类的调用。
ResourceBundle.Control
如果实例同时由多个线程使用,则必须是线程安全的。 ResourceBundle.getBundle
不同步以调用 ResourceBundle.Control
方法。 方法的默认实现是线程安全的。
应用程序可以指定 ResourceBundle.Control
工厂方法返回 getControl
的实例,也可以从子类 ResourceBundle.Control
创建,以自定义捆绑包加载过程。 下面是更改默认捆绑包加载过程的示例。
<b>示例 1</b>
以下代码 ResourceBundle.getBundle
仅查找基于属性的资源。
import java.util.*;
import static java.util.ResourceBundle.Control.*;
...
ResourceBundle bundle =
ResourceBundle.getBundle("MyResources", new Locale("fr", "CH"),
ResourceBundle.Control.getControl(FORMAT_PROPERTIES));
给定说明中示例中 ResourceBundle.getBundle
的资源捆绑包,此 ResourceBundle.getBundle
调用将加载 MyResources_fr_CH.properties
其父级为 MyResources_fr.properties
父 MyResources.properties
级的资源捆绑包。 (MyResources_fr_CH.properties
不是隐藏的,而是 MyResources_fr_CH.class
。
<b>示例 2</b>
下面是使用 Properties#loadFromXML(java.io.InputStream) Properties.loadFromXML
.. 加载基于 XML 的捆绑包的示例。
ResourceBundle rb = ResourceBundle.getBundle("Messages",
new ResourceBundle.Control() {
public List<String> getFormats(String baseName) {
if (baseName == null)
throw new NullPointerException();
return Arrays.asList("xml");
}
public ResourceBundle newBundle(String baseName,
Locale locale,
String format,
ClassLoader loader,
boolean reload)
throws IllegalAccessException,
InstantiationException,
IOException {
if (baseName == null || locale == null
|| format == null || loader == null)
throw new NullPointerException();
ResourceBundle bundle = null;
if (format.equals("xml")) {
String bundleName = toBundleName(baseName, locale);
String resourceName = toResourceName(bundleName, format);
InputStream stream = null;
if (reload) {
URL url = loader.getResource(resourceName);
if (url != null) {
URLConnection connection = url.openConnection();
if (connection != null) {
// Disable caches to get fresh data for
// reloading.
connection.setUseCaches(false);
stream = connection.getInputStream();
}
}
} else {
stream = loader.getResourceAsStream(resourceName);
}
if (stream != null) {
BufferedInputStream bis = new BufferedInputStream(stream);
bundle = new XMLResourceBundle(bis);
bis.close();
}
}
return bundle;
}
});
...
private static class XMLResourceBundle extends ResourceBundle {
private Properties props;
XMLResourceBundle(InputStream stream) throws IOException {
props = new Properties();
props.loadFromXML(stream);
}
protected Object handleGetObject(String key) {
return props.getProperty(key);
}
public Enumeration<String> getKeys() {
...
}
}
已在 1.6 中添加。
适用于 . 的 java.util.ResourceBundle.Control
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
ResourceBundle.Control() |
唯一构造函数。 |
ResourceBundle.Control(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
字段
TtlDontCache |
不缓存加载的资源捆绑实例的生存时间常量。 |
TtlNoExpirationControl |
用于禁用缓存中已加载资源捆绑实例的过期控制的时间到生存期常量。 |
属性
Class |
返回此 |
FormatClass |
仅类格式 |
FormatDefault |
默认格式 |
FormatProperties |
仅包含 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
|
JniPeerMembers |
|
PeerReference |
|
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Dispose() |
|
Dispose(Boolean) |
|
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
GetCandidateLocales(String, Locale) |
返回一个 |
GetControl(IList<String>) |
|
GetFallbackLocale(String, Locale) |
返回一个 |
GetFormats(String) |
返回一个 |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
GetNoFallbackControl(IList<String>) |
|
GetTimeToLive(String, Locale) |
返回在此 |
JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
NeedsReload(String, Locale, String, ClassLoader, ResourceBundle, Int64) |
根据给定 |
NewBundle(String, Locale, String, ClassLoader, Boolean) |
如有必要,使用给定的类加载程序为给定格式和区域设置的给定捆绑名称实例化资源捆绑包。 |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
ToArray<T>() |
|
ToBundleName(String, Locale) |
将给定 |
ToResourceName(String, String) |
将给定 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
|
Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
IJavaPeerable.Disposed() |
|
IJavaPeerable.DisposeUnlessReferenced() |
|
IJavaPeerable.Finalized() |
|
IJavaPeerable.JniManagedPeerState |
|
IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
IJavaPeerable.SetPeerReference(JniObjectReference) |
|
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|