资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它
主要API如下
// 使用指定的基本名称、语言环境和调用者的类加载器获取资源包。调用此方法等同于调用
// getBundle(baseName, locale, this.getClass().getClassLoader())
public static final ResourceBundle getBundle(String baseName,Locale locale)
// 返回键的枚举。
public abstract Enumeration<String> getKeys()
// 从此资源包或它的某个父包中获取给定键的对象。此方法首先尝试使用 handleGetObject 从此资源包中获取对象。
// 如果不成功,并且父资源包不为 null,则调用父包的 getObject 方法。
// 如果仍不成功,则抛出 MissingResourceException
public final Object getObject(String key)
子接口 java.util.PropertyResourceBundle , java.util.ListResourceBundle
PropertyResourceBundle 由于写入的是.properties文件,所以保存的值都是字符串,用文件实现
ListResourceBundle 可以保存任意类型的数据,用类来实现, 主要实现 contents 方法
import java.util.*;
public class StatsBundle_ja_JP extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
private Object[][] contents = {
{ "GDP", new Integer(21300) },
{ "Population", new Integer(125449703) },
{ "Literacy", new Double(0.99) },
}
}
注意:getBundel 中的参数 baseName( 取名 LabelsBundle) 有一点说明,
如果用 PropertyResourceBundle, 则相对应的文件名为 LabelsBundle_对应的语言.peropertis(如zh_cn, en, de)等
如果用 ListResourceBundle,则对应的类名为 LabelsBundle_语言名_国家名 如(ja_JP , fr_FR ,en_CA)等
扩展 ResourceBundle
//使用指定基本名称、目标语言环境和控件、调用者的类加载器返回一个资源包。调用此方法等同
//于调用getBundle(baseName, targetLocale, this.getClass().getClassLoader(),control),
public static final ResourceBundle getBundle(String baseName,Locale targetLocale,ResourceBundle.Control control)
import java.util.*;
public class RBControl {
public static void main(String[] args) {
test(Locale.CHINA);
test(new Locale("zh", "HK"));
test(Locale.TAIWAN);
test(Locale.CANADA);
}
private static void test(Locale locale) {
ResourceBundle rb = ResourceBundle.getBundle("RBControl", locale,
new ResourceBundle.Control() {
@Override
//返回 Locale 的 List,作为 baseName 和 locale 的候选语言环境。在工厂方法每次尝试为目标 Locale 查找资源包时,
//由 ResourceBundle.getBundle 工厂方法调用此方法。
public List<Locale> getCandidateLocales(String baseName, Locale locale) {
if (baseName == null)
throw new NullPointerException();
if (locale.equals(new Locale("zh", "HK"))) {
return Arrays.asList(
locale,
Locale.TAIWAN,
// no Locale.CHINESE here
Locale.ROOT);
} else if (locale.equals(Locale.TAIWAN)) {
return Arrays.asList(
locale,
// no Locale.CHINESE here
Locale.ROOT);
}
return super.getCandidateLocales(baseName, locale);
}
});
System.out.println("locale: " + locale);
System.out.println("\tregion: " + rb.getString("region"));
System.out.println("\tlanguage: " + rb.getString("language"));
}
}
分享到:
相关推荐
### Java使用SOAP获取WebService实例解析 #### WebService简介 WebService是一种跨编程语言和操作系统平台的、在网络上进行数据交换的一种方式。它使用标准的Internet协议,如HTTP、XML、SOAP等来实现不同系统间的...
Java是一种广泛使用的高级编程语言,以其平台无关性和强大的类库支持闻名。它的语法受到C++的影响,但引入了垃圾回收机制,简化了内存管理。另一方面,Pascal则是一种较老的语言,源于1970年代,因其清晰的语法结构...
《单元测试之道Java版:使用JUnit》PDF 下载
当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等。 适合人群 1. 具备一定编程基础,工作1-3年的研发...
- **创建HttpClient实例**:首先,我们需要创建一个HttpClient对象,例如使用`HttpClientBuilder`或`HttpClients.createDefault()`方法。 - **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要...
这个"ECharts-java 的使用demo"很可能是展示如何在Java项目中集成并使用ECharts的实例。下面将详细介绍如何在Java项目中使用ECharts-java: 1. **集成ECharts-java**: 首先,你需要在项目中添加ECharts-java的...
- 使用Java的图像处理库,如JavaCV或JavaFX,进行这些操作。 5. **结果解析**: - 识别结果通常是JSON格式,Java需要解析这个结果,提取出所需的文字信息。 - 使用Jackson或Gson等库进行JSON解析。 6. **API...
本资源是使用 java,分别用 TCP 和 UDP 传输文件的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用 TCP 和 UDP 传输文件》可以参考,地址是:...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
假设一个使用Eclipse开发的项目在进行全站HTML文件生成时出现了“java.lang.OutOfMemoryError: Java heap space”异常。为了解决这个问题: 1. **调整JVM参数**: - 在Eclipse的启动脚本中添加`-Xmx256M`来增加...
在Java中,我们可以使用`KerberosLoginModule`实现Kerberos认证。这个模块是Java的登录框架(JAAS,Java Authentication and Authorization Service)的一部分,允许用户根据策略文件配置认证流程。 - **配置JAAS...
Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级应用中尤为流行,尤其是在构建大型的网络应用程序方面。 JSON(JavaScript Object Notation)是一种轻量级的数据交换...
当我们循环遍历文件进行操作的时候可能遇到各种各样的文件编码格式,如果不知道当前循环的文件格式的话,将会遇到各种各样的问题,...使用java动态识别文件编码EncodingDetect.java这个工具类以后就变得异常简单了!
下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...
Java编程语言在处理多媒体文件,特别是视频文件时,常常需要获取诸如时长、分辨率、高宽比以及码率等关键信息。...通过熟练掌握Xuggler的使用,你可以轻松地构建出能够处理多媒体文件的Java应用程序。
在本教程中,我们将探讨如何使用Java和RXTX库来读取串口数据。 首先,确保你已经安装了RXTX库。`A_RXTX.rar`文件可能包含这个库的JAR文件,解压缩后将`rxtxSerial.jar`和`rxtxParallel.jar`添加到你的项目类路径中...
errorCompoundVariable.java 错误使用局部变量示例 factorial.java 求阶乘 Fibonacci.java 求Fiblnacci数列 GcdAndGcm.java 求最大公约数和最小公倍数 errorInit.java 演示变量初始化错误的程序 integer...
Java版的AMR文件转MP3工具是一种编程解决方案,它利用特定的类库,如JAVE(Java Audio Video Encoder),将AMR编码的音频文件转换为MP3格式,以便于在Web上直接播放。AMR(Adaptive Multi-Rate)是主要用于语音编码...
Sphinx-4是卡内基梅隆大学(CMU)开发的一个开源语音识别引擎,特别适合Java开发者使用。它提供了丰富的API和工具,支持实时语音识别,具有良好的可扩展性和灵活性。 【Sphinx-4的Java环境搭建】 在Java环境下使用...
Java使用类和对象来组织代码,而Python则支持多种面向对象的特性,包括类、对象、以及函数式编程元素。此外,Java的控制流程(如if-else,for循环)和异常处理与Python也有所不同。 在实际的转换过程中,工具可能会...