ResourceBundle 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
资源捆绑包包含特定于区域设置的对象。
[Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)]
public abstract class ResourceBundle : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)>]
type ResourceBundle = class
inherit Object
- 继承
- 派生
- 属性
注解
资源捆绑包包含特定于区域设置的对象。 例如,当程序需要特定于区域设置的资源时, String 程序可以从适用于当前用户区域设置的资源捆绑包加载它。 这样,便可以编写独立于用户区域设置隔离大部分区域设置(如果不是全部)的资源捆绑包中特定于区域设置的信息的程序代码。
这样,便可以编写程序:<UL<>LI 可以轻松本地化或翻译为不同语言 <LI> 处理多个区域设置,>稍后可以轻松修改 LI> 以支持更多区域<<设置 /UL>
资源捆绑属于成员共享公用基名称但名称还具有标识其区域设置的其他组件的家庭。 例如,一系列资源捆绑包的基名称可能是“MyResources”。 该系列应具有一个默认资源捆绑包,该捆绑包的名称与其系列(“MyResources”)相同,如果不支持特定区域设置,将用作最后手段的捆绑包。 然后,该家庭可以根据需要提供尽可能多的特定于区域设置的成员,例如一个名为“MyResources_de”的德语成员。
系列中的每个资源捆绑包都包含相同的项,但已针对该资源捆绑包表示的区域设置转换这些项。 例如,“MyResources”和“MyResources_de”可能都有一个 String 用于取消操作的按钮。 在“MyResources”中, String 可能包含“Cancel”,在“MyResources_de”中,它可能包含“Abbrechen”。
如果不同国家/地区有不同的资源,则可以进行专用化:例如,“MyResources_de_CH”包含瑞士(CH)德语(de)的对象。 如果只想修改专用化中的某些资源,可以这样做。
当程序需要特定于区域设置的对象时,它会使用#getBundle(java.lang.String, java.util.Locale) getBundle方法加载ResourceBundle类:<blockquote>
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
</blockquote>
资源捆绑包包含键/值对。 密钥唯一标识捆绑包中特定于区域设置的对象。 下面是包含两个 ListResourceBundle 键/值对的示例: <blockquote>
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
</blockquote> 密钥始终 String为 s。 在此示例中,密钥为“OkKey”和“CancelKey”。 在上面的示例中,值也是 Strings--“OK”和“Cancel”,但它们不必是。 这些值可以是任何类型的对象。
使用适当的 getter 方法从资源捆绑包中检索对象。 由于“OkKey”和“CancelKey”都是字符串,因此你将用于 getString 检索它们: <blockquote>
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
</blockquote> Getter 方法都要求将密钥作为参数,并在找到时返回对象。 如果未找到对象,getter 方法将引发一个 MissingResourceException。
getString此外,ResourceBundle还提供用于获取字符串数组getStringArray的方法,以及任何其他对象类型的泛型getObject方法。 使用 getObject时,必须将结果强制转换为适当的类型。 例如: <blockquote>
int[] myIntegers = (int[]) myResources.getObject("intList");
</blockquote>
Java Platform 提供了两个ResourceBundle子类,ListResourceBundle并提供PropertyResourceBundle一种相当简单的方法来创建资源。 如前一示例中简要介绍的那样, ListResourceBundle 将其资源作为键/值对列表进行管理。
PropertyResourceBundle 使用属性文件管理其资源。
如果 ListResourceBundle 不符合 PropertyResourceBundle 需求,可以编写自己的 ResourceBundle 子类。 子类必须重写两种方法: handleGetObject 和 getKeys()。
如果子类被多个线程同时使用,则子类的 ResourceBundle 实现必须是线程安全的。 此类中非抽象方法的默认实现,以及直接已知的具体子类 ListResourceBundle 中的方法,并且 PropertyResourceBundle 是线程安全的。
<h3>ResourceBundle.Control</h3>
该 ResourceBundle.Control 类提供了执行 getBundle 采用实例的工厂方法 ResourceBundle.Control 执行捆绑加载过程所必需的信息。 你可以实现自己的子类,以便启用非标准资源捆绑包格式、更改搜索策略或定义缓存参数。 有关详细信息,请参阅类的说明和 #getBundle(String, Locale, ClassLoader, Control) getBundle 工厂方法。
<h3>缓存管理</h3>
默认情况下,工厂方法创建 getBundle 的资源捆绑实例会缓存,如果缓存了同一资源捆绑实例,工厂方法会多次返回相同的资源捆绑实例。
getBundle 客户端可以清除缓存、使用生存时间值管理缓存的资源捆绑实例的生存期,或指定不缓存资源捆绑实例。 有关详细信息,请参阅 #getBundle(String、Locale、ClassLoader、Control)<代码 getBundle</code> factory 方法#clearCache(ClassLoader) clearCacheControl#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLiveControl#needsReload(String, Locale, String, ClassLoader, ResourceBundle, long) ResourceBundle.Control.needsReload的说明。>
<h3>示例</h3>
下面是一个非常简单的子类示例,MyResources它管理两个ResourceBundle资源(对于可能使用的Map更多资源)。 请注意,如果“父级” ResourceBundle 处理具有相同值的同一键(如下面的 okKey),则无需提供值。
<blockquote>
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
</blockquote> 你不必限制自己使用单个系列 ResourceBundle。 例如,可以有一组异常消息(、ExceptionResourcesExceptionResources_fr、ExceptionResources_de...)和一个用于小组件(WidgetResourceWidgetResources_fr、、WidgetResources_de...)的捆绑包,但可以分解资源,但你喜欢。
在 1.1 中添加。
适用于 . 的 java.util.ResourceBundleJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| 名称 | 说明 |
|---|---|
| ResourceBundle() |
唯一构造函数。 |
| ResourceBundle(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
| 名称 | 说明 |
|---|---|
| BaseBundleName |
返回此捆绑包的基名称(如果已知或 |
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| JniPeerMembers |
资源捆绑包包含特定于区域设置的对象。 |
| Keys |
返回此 |
| Locale |
返回此资源捆绑包的区域设置。 |
| Parent |
此捆绑包的父捆绑包。 |
| PeerReference |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
| 名称 | 说明 |
|---|---|
| ClearCache() |
从使用调用方类加载程序加载的缓存中删除所有资源捆绑包。 |
| ClearCache(ClassLoader) |
从缓存中删除已由给定类加载程序加载的所有资源捆绑包。 |
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| ContainsKey(String) |
确定给定 |
| Dispose() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| Dispose(Boolean) |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GetBundle(String, Locale, ClassLoader, ResourceBundle+Control) |
使用指定的基名称、默认区域设置和调用方类加载程序获取资源捆绑包。 |
| GetBundle(String, Locale, ClassLoader) |
使用指定的基名称、区域设置和类加载程序获取资源捆绑包。 |
| GetBundle(String, Locale, ResourceBundle+Control) |
使用指定的基名称、默认区域设置和调用方类加载程序获取资源捆绑包。 |
| GetBundle(String, Locale) |
使用指定的基名称和区域设置以及调用方类加载程序获取资源捆绑包。 |
| GetBundle(String, ResourceBundle+Control) |
使用指定的基名称、默认区域设置和调用方类加载程序获取资源捆绑包。 |
| GetBundle(String) |
使用指定的基名称、默认区域设置和调用方类加载程序获取资源捆绑包。 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetObject(String) |
从此资源捆绑包或其父级获取给定密钥的对象。 |
| GetString(String) |
从此资源捆绑包或其父级获取给定密钥的字符串。 |
| GetStringArray(String) |
从此资源捆绑包或其父级获取给定键的字符串数组。 |
| HandleGetObject(String) |
从此资源捆绑包中获取给定密钥的对象。 |
| HandleKeySet() |
返回 |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| KeySet() |
返回 |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| SetParent(ResourceBundle) |
设置此捆绑包的父捆绑包。 |
| ToArray<T>() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.Finalized() |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
资源捆绑包包含特定于区域设置的对象。 (继承自 Object) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
资源捆绑包包含特定于区域设置的对象。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |