要自定义ResourceBundle,可以创建一个继承自java.util.ResourceBundle的新类,并重写其父类中的一些方法来实现自定义的逻辑。下面是一个简单的例子:
import java.util.ListResourceBundle;
import java.util.ResourceBundle;
public class CustomResourceBundle extends ListResourceBundle {
@Override
protected Object[][] getContents() {
return new Object[][] {
{"greeting", "Hello, World!"},
{"farewell", "Goodbye, World!"}
};
}
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("CustomResourceBundle");
System.out.println(bundle.getString("greeting"));
System.out.println(bundle.getString("farewell"));
}
}
在上面的例子中,我们创建了一个CustomResourceBundle类,继承自ListResourceBundle,并实现了getContents方法来定义资源键值对。然后在main方法中使用ResourceBundle.getBundle方法加载自定义的ResourceBundle,并通过getString方法获取资源的值。
需要注意的是,自定义ResourceBundle的命名需要符合规范,通常是基于类的相对路径,例如“com.example.CustomResourceBundle”。此外,也可以通过指定不同的Locale来加载不同的资源文件,以实现国际化和本地化。