【发布时间】:2011-01-04 13:49:43
【问题描述】:
我想在不实际加载的情况下检查 ResourceBundle 是否存在。
通常,我使用的是 Guice,在初始化时,我想检查是否存在,而在执行时,我想加载它。如果捆绑包不存在,我想要一份关于 RB 不存在的早期报告。
如果可以获取用于特定 ResourceBundle 的 ResourceBundle.Control 实例,那么获取构建实际资源名称的基本信息将没有问题(使用 toBundleName() 和 toResourceName()),但它不是那个级别的案例。
编辑:
好的,我找到了方法。我将创建一个可扩展的 ResourceBundle.Control(使用自定义 addFormat(String, Class))来存储所有捆绑格式,然后使用我自己的另一种方法来检查特定语言环境的所有可能文件名(使用 Class. getResource 如下所示)。
编码说:
class MyControl extends ResourceBundle.Control {
private Map<String,Class<? extends ResourceBundle>> formats = new LinkedHashMap();
public void addFormat(String format,Class<? extends ResourceBundle> rbType) {
formats.put(format, rbType);
}
public boolean resourceBundleExists(ClassLoader loader, String baseName, Locale locale) {
for (String format: formats.keySet()) {
// for (loop on locale hierarchy) {
if (loader.getResource(toResourceName(toBundleName(baseName, locale), format)) != null) {
return true;
}
// }
}
return false;
}
}
【问题讨论】:
标签: java resourcebundle