【发布时间】:2021-09-11 16:35:44
【问题描述】:
我正在尝试找到一种方法来使用资源包,如果找不到密钥,则可能会进行某种回退。 目前我发现的唯一方法是捕获异常:
try {
resourceBundle.getString(key);
} catch (MissingResourceException ex) {
return defaultValue;
}
这个问题有更好的解决方案吗(类似于Map 中的getOrDefault)?也许是另一个 API 更好的库?
【问题讨论】:
-
@Lino 来自标准Java库的docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/…
-
ResourceBundles 包含应用程序使用的本地化数据。应用程序已经知道它将查找哪些键。因此,ResourceBundle 查找失败是不正常的。您是否使用 ResourceBundle 来保存配置?这不是 ResourceBundle 的用途;为此使用常规属性资源(可以有任意数量的后备属性)。
-
@VGR 某些值在 UI 应用程序中是可选的,例如工具提示。例如,我使用键“x”创建按钮,然后在 ResourceBundles 中查找“x.label”和“x.tooltip”。我可以“硬编码”关于哪个 UI 元素具有或不具有工具提示的信息,但通过具有可选值,我可以拥有更简单的代码库,并且可以在需要时轻松添加资源(有时您可能只需要一种本地化的工具提示)。
-
啊,好吧。那么maio290的回答就是最好的办法。
标签: java resourcebundle