8.2.6 从Java类中获得国际化资源信息
优质
小牛编辑
133浏览
2023-12-01
除了可以使用资源文件来保存资源信息外,还可以将资源信息放到Java类中。保存资源信息的Java类也可以被称为资源类。资源类和普通Java类有如下两点差异:
l 资源类的命名受到限制:资源类的命名和资源文件的命名类似。文件名必须是baseName_language_country、baseName_language或baseName中的一个。
2 资源类必须从java.util.ListResourceBundle类继承:ListResourceBundle类是一个抽象类,该类的子类必须实现getContents方法。该方法用于返回一个保存资源信息的二维String数组。
在src\resources目录创建一个MyResource_zh_CN.java文件,并输入如下的代码:
package resources;
import java.util.ListResourceBundle;
public class MyResource_zh_CN extends ListResourceBundle
{
// 定义保存资源信息的二维数组
private final Object resources[][] =
{
{"file", "文件(资源类)"},
{"help", "帮助(资源类)"}
};
@Override
protected Object[][] getContents()
{
return resources;
}
}
ReadResourceClass类从资源类(MyResource_zh_CN类)获得相应的资源信息,ReadResourceClass类的代码如下:
package chapter8;
import java.util.ResourceBundle;
public class ReadResourceClass
{
public static void main(String[] args)
{
ResourceBundle rb = ResourceBundle.getBundle("resources.MyResource");
System.out.println("help = " + rb.getString("help"));
System.out.println("file = " + rb.getString("file"));
}
}
ReadResourceClass程序的输出结果如下:
help = 帮助(资源类)
file = 文件(资源类)
如果资源文件和资源类同时存在,则搜索顺序如下:
l baseName_language_country.class
2 baseName_language_country.properties
3 baseName_language.class
4 baseName_language.properties
5 baseName.class
6 baseName.properties