Java中的 ResourceBundle 和 ListResourceBundle 类及示例
ResourceBundle和ListResourceBundle类是Java.util 包的一部分。这些课程旨在帮助项目的国际化。
ResourceBundle : ResourceBundle类是一个抽象类。它定义了使您能够管理一组区域设置敏感资源的方法。资源包由其家族名称标识。向姓氏添加一个指定语言的两个字符的小写语言代码。我们还可以在语言代码之后指定国家代码。它是一个由两个字符组成的大写标识符,并且在链接到资源包名称时前面带有一个下划线。
类层次结构:
java.lang.Object
↳java.util.ResourceBundle
构造函数:
1. ResourceBundle() :默认构造函数,主要供子类和工厂方法使用。
public ResourceBundle()
方法:
1. clearCache() :此方法从缓存中删除由默认类加载器加载的所有资源包。
static final void clearCache()
2. containsKey() :如果传递的字符串参数是调用资源包中的键,则此方法返回 true。
boolean containsKey(String k)
3. getBundle() :此方法加载具有给定名称和指定语言环境的资源包。
static final ResourceBundle getBundle(String familyName)
static final ResourceBundle getBundle(String familyName, Locale loc)
4. setParent() :此方法将传递的包设置为调用包的父级。在查找的情况下,如果在调用对象中找不到键,则在父包中查找它。
protected void setParent(ResourceBundle parent)
5. getObject() :此方法检索并返回与作为参数从当前资源包或父级传递的键关联的对象。
public final Object getObject(String key)
6. getHandleObject() :此方法从资源包返回与给定键关联的对象。如果没有可用的对象,则返回 null。
protected abstract Object handleGetObject(String key)
7. getString() :此方法从当前资源包或父资源中检索并返回与作为参数传递的键关联的字符串。
public final String getString(String key)
8. getStringArray() :此方法检索并返回与作为参数从当前资源包或父级传递的键关联的字符串数组。
public final String[] getStringArray(String key)
9. getLocale() :此方法返回与当前包关联的区域设置。
public Locale getLocale()
10. containsKey() :此方法检查给定键是否存在于资源包或其父级中。
public boolean containsKey(String key)
11. keySet() :此方法返回当前包或其父包中所有键的集合。
public Set keySet()
ListResourceBundle :它是ResourceBundle的子类。它是一个抽象类,用于管理键/值对数组中的资源。它只添加了一个新方法getContents() ,每个子类都必须实现该方法。
构造函数: 1. ListResourceBundle() :创建对象的默认构造函数。
public ListResourceBundle()
方法:
1. getContents() :此方法返回一个二维数组,其中包含表示资源的键/值对。
protected abstract Object[][] getContents()
2.handleGetObject() :如果存在,该方法返回与当前bundle中的键关联的对象。
public final Object handleGetObject(String key)
3. getKeys() :此方法返回资源包中键的枚举。
public Enumeration getKeys()
4. handleKeySet() :该方法返回当前资源包中所有键的集合。
protected Set handleKeySet()
演示 ResourceBundle 使用的示例
Java
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.ListResourceBundle;
class SampleRB extends ListResourceBundle {
protected Object[][] getContents()
{
Object[][] resources = new Object[3][2];
resources[0][0] = "title";
resources[0][1] = "My Program";
resources[1][0] = "StopText";
resources[1][1] = "Stop";
resources[2][0] = "StartText";
resources[2][1] = "Start";
return resources;
}
}
class SampleRB_de extends ListResourceBundle {
protected Object[][] getContents()
{
Object[][] resources = new Object[3][2];
resources[0][0] = "title";
resources[0][1] = "Mein Program";
resources[1][0] = "StopText";
resources[1][1] = "Anschlag";
resources[2][0] = "StartText";
resources[2][1] = "Anfang";
return resources;
}
}
public class LRBDemo {
public static void main(String[] args)
{
ResourceBundle rd
= ResourceBundle
.getBundle("SampleRB",
Locale.ENGLISH);
System.out.println("English Version:");
System.out.println("String for Title key: "
+ rd.getString("title"));
System.out.println("String for StopText key: "
+ rd.getString("StopText"));
System.out.println("String for StartText key: "
+ rd.getString("StartText"));
rd = ResourceBundle
.getBundle("SampleRB",
Locale.GERMAN);
System.out.println("\nGerman Version");
System.out.println("String for Title key: "
+ rd.getString("title"));
System.out.println("String for StopText key: "
+ rd.getString("StopText"));
System.out.println("String for StartText key: "
+ rd.getString("StartText"));
}
}
输出:
English Version:
String for Title key: My Program
String for StopText key: Stop
String for StartText key: Start
German Version
String for Title key: Mein Program
String for StopText key: Anschlag
String for StartText key: Anfang
参考: https: Java/util/ResourceBundle.html