Java ResourceBundle.Control newBundle() 方法



描述

Java ResourceBundle.Control newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) 方法使用给定的类加载器(如果需要)为给定格式和区域设置的给定捆绑名称实例化资源捆绑。

如果对于给定的参数没有可用的资源捆绑,则此方法返回null。如果由于意外错误而无法实例化资源捆绑,则必须通过抛出 Error 或 Exception 来报告错误,而不仅仅是返回 null。

声明

以下是java.util.Control.newBundle()方法的声明

public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)

参数

  • baseName − 资源捆绑的基本捆绑名称,一个完全限定的类名

  • locale − 应为其实例化资源捆绑的区域设置

  • format − 要加载的资源捆绑格式

  • loader − 缓存中已过期的资源捆绑实例

  • reload − 指示捆绑重新加载的标志;如果重新加载已过期的资源捆绑,则为true,否则为false

返回值

此方法返回资源捆绑实例,如果找不到任何实例,则返回null

异常

  • NullPointerException − 如果 bundleName、locale、format 或 loader 为 null,或者 toBundleName 返回 null

  • IllegalArgumentException − 如果格式未知,或者为给定参数找到的资源包含格式错误的数据。

  • ClassCastException − 如果加载的类无法转换为 ResourceBundle

  • IllegalAccessException − 如果类或其无参构造函数不可访问。

  • InstantiationException − 如果由于某种其他原因导致类的实例化失败。

  • ExceptionInInitializerError − 如果此方法引发的初始化失败。

  • SecurityException − 如果存在安全管理器并且拒绝创建新实例。

  • IOException − 如果在使用任何 I/O 操作读取资源时发生错误

为美国区域设置创建新的资源捆绑名称示例

以下示例显示了 Java ResourceBundle.Control newBundle() 方法的使用来获取资源捆绑。我们使用 getControl() 方法创建了使用 FORMAT_DEFAULT 的资源捆绑控制。然后使用美国区域设置的 newBundle() 方法使用 hello_en_US.properties 文件创建资源捆绑,然后根据键打印值。

package com.tutorialspoint;

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;

public class ResourceBundleControlDemo {
   public static void main(String[] args) {

      // create a new ResourceBundle.Control with default format
      ResourceBundle.Control rbc = ResourceBundle.Control.getControl(Control.FORMAT_DEFAULT);
      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // create a new bundle
      ResourceBundle a;
      try {
         a = rbc.newBundle("hello", Locale.US, "java.properties", cl, false);
         System.out.println("" + a.getString("hello"));
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

输出

假设我们在你的 CLASSPATH 中有一个名为hello_en_US.properties的资源文件,其内容如下。此文件将用作我们示例程序的输入 -

hello = Hello World!

让我们编译并运行以上程序,这将产生以下结果 -

Hello World!

为法语区域设置创建新的资源捆绑名称示例

以下示例显示了 Java ResourceBundle.Control newBundle() 方法的使用来获取资源捆绑。我们使用 getControl() 方法创建了使用 FORMAT_DEFAULT 的资源捆绑控制。然后使用法语区域设置的 newBundle() 方法使用 hello_fr_FR.properties 文件创建资源捆绑,然后根据键打印值。

package com.tutorialspoint;

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;

public class ResourceBundleControlDemo {
   public static void main(String[] args) {

      // create a new ResourceBundle.Control with default format
      ResourceBundle.Control rbc = ResourceBundle.Control.getControl(Control.FORMAT_DEFAULT);
      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // create a new bundle
      ResourceBundle a;
      try {
         a = rbc.newBundle("hello", Locale.FRANCE, "java.properties", cl, false);
         System.out.println("" + a.getString("hello"));
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

输出

假设我们在你的 CLASSPATH 中有一个名为hello_fr_FR.properties的资源文件,其内容如下。此文件将用作我们示例程序的输入 -

hello = Bonjour le monde!

让我们编译并运行以上程序,这将产生以下结果 -

Bonjour le monde!

为德语区域设置创建新的资源捆绑名称示例

以下示例显示了 Java ResourceBundle.Control newBundle() 方法的使用来获取资源捆绑。我们使用 getControl() 方法创建了使用 FORMAT_DEFAULT 的资源捆绑控制。然后使用德语区域设置的 newBundle() 方法使用 hello_de_DE.properties 文件创建资源捆绑,然后根据键打印值。

package com.tutorialspoint;

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;

public class ResourceBundleControlDemo {
   public static void main(String[] args) {

      // create a new ResourceBundle.Control with default format
      ResourceBundle.Control rbc = ResourceBundle.Control.getControl(Control.FORMAT_DEFAULT);
      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // create a new bundle
      ResourceBundle a;
      try {
         a = rbc.newBundle("hello", Locale.GERMANY, "java.properties", cl, false);
         System.out.println("" + a.getString("hello"));
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

输出

假设我们在你的 CLASSPATH 中有一个名为hello_de_DE.properties的资源文件,其内容如下。此文件将用作我们示例程序的输入 -

hello = Hallo Welt!

让我们编译并运行以上程序,这将产生以下结果 -

Hallo Welt!
java_util_resourcebundle_control.htm
广告