Java ResourceBundle.Control 的 needsReload() 方法



描述

java ResourceBundle.Control needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) 方法根据 loadTime 给出的加载时间或其他条件确定缓存中过期的 bundle 是否需要重新加载。如果需要重新加载,则该方法返回 true;否则返回 false

声明

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

public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)

参数

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

  • locale − 应该为此区域设置实例化资源包

  • format − 要加载的资源包格式

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

  • bundle − 应该为此区域设置实例化资源包

  • loadTime − bundle 加载并放入缓存的时间

返回值

如果过期的 bundle 需要重新加载,则为 true;否则为 false

异常

NullPointerException − 如果 baseName、locale、format、loader 或 bundle 为 null

检查给定美国区域设置资源包的重新加载状态示例

以下示例演示了如何使用 Java ResourceBundle.Control needsReload() 方法获取给定资源包的重新加载状态。我们使用 getControl() 方法创建了一个带有 FORMAT_DEFAULT 的资源包控制。然后,使用 needsReload() 方法打印相应 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);

      ResourceBundle bundle = ResourceBundle.getBundle("hello", Locale.US);

      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // print if the control needs restart
      long l = 2000000l;
      boolean x = rbc.needsReload("hello", Locale.US, "java.class", cl, bundle, 200);
      System.out.println("" + x);
   }
}

输出

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

hello = Hello World!

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

false

检查给定法语区域设置资源包的重新加载状态示例

以下示例演示了如何使用 Java ResourceBundle.Control needsReload() 方法获取给定资源包的重新加载状态。我们使用 getControl() 方法创建了一个带有 FORMAT_DEFAULT 的资源包控制。然后,使用 needsReload() 方法打印相应 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);

      ResourceBundle bundle = ResourceBundle.getBundle("hello", Locale.FRANCE);

      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // print if the control needs restart
      long l = 2000000l;
      boolean x = rbc.needsReload("hello", Locale.FRANCE, "java.class", cl, bundle, 200);
      System.out.println("" + x);
   }
}

输出

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

hello = Bonjour le monde!

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

false

检查给定德语区域设置资源包的重新加载状态示例

以下示例演示了如何使用 Java ResourceBundle.Control needsReload() 方法获取给定资源包的重新加载状态。我们使用 getControl() 方法创建了一个带有 FORMAT_DEFAULT 的资源包控制。然后,使用 needsReload() 方法打印相应 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);

      ResourceBundle bundle = ResourceBundle.getBundle("hello", Locale.GERMAN);

      ClassLoader cl = ClassLoader.getSystemClassLoader();

      // print if the control needs restart@marips
      long l = 2000000l;
      boolean x = rbc.needsReload("hello", Locale.GERMAN, "java.class", cl, bundle, 200);
      System.out.println("" + x);
   }
}

输出

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

hello = Hallo Welt!

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

false
java_util_resourcebundle_control.htm
广告