从代码向Java资源包添加新条目

从代码向Java资源包添加新条目,java,add,resourcebundle,Java,Add,Resourcebundle,我使用Java资源包来本地化我的应用程序,我创建了一个函数,它返回一条根据代码中的资源包本地化的消息。。。大概是这样的: public String getDescription(String code, ResourceBundle resBundle){ String returnValue = null; try{ returnValue=resBundle.getString(code); }catch(Exception ex){

我使用Java资源包来本地化我的应用程序,我创建了一个函数,它返回一条根据代码中的资源包本地化的消息。。。大概是这样的:

public String getDescription(String code, ResourceBundle resBundle){
    String returnValue = null;  
    try{
        returnValue=resBundle.getString(code);
    }catch(Exception ex){
        returnValue = null;
    }
}
但是,我想知道的是,如果传递的代码不存在,是否可以向资源包中添加条目,例如:

if(!resBundle.containsKey(code)){
    //This next line is pseudo-code... it is not valid at all
    resBundle.addEntry(code, "xyz");
}

有什么帮助吗?

您可以尝试使用
属性
类,并通过将ResourceBundle的键转换为
类来填充它,因为属性类的功能类似于带有键和值的
映射。例如:

Properties props = new Properties();
    resBundle.keySet().stream().forEach(k -> props.put(k, resBundle.getString(k)));
然后,您可以使用
Properties
getProperty()
方法,如果找不到指定的键,该方法将返回在第二个参数中指定的值(在您的情况下,键是
code
):


我不明白你的解决方案。。。它不会使用密钥更新资源包。我的意思是,我需要的是更新资源包,添加新的键。我认为如果找不到键,可以在运行时使用默认值。无论如何,我认为您不能修改
ResourceBundle
本身的值,它仅用于读取。但是你可以通过
属性
类来完成,正如前面提到的:谢谢你,埃尔顿。。。我想要一种跟踪哪些条目不在资源中的方法,这样我就可以定期查看哪些条目需要更新。我所做的是,用你的方法,有一个并行文件,如果我保存未找到的条目。。如果你觉得我的回答有帮助,请接受。谢谢:)
ResourceBundles
a并不是真正设计用来改变代码的。它们背后的思想是提供代码到本地化值的静态映射。您能解释一下为什么要向资源包添加条目吗?也许有不同的方法来解决你的问题。
returnValue=props.getProperty(code,"xyz");