ITEEDU

Java Gossip: 使用 ResourceBundle

在程序中有很多字符串讯息会被写死在程序中,如果您想要改变某个字符串讯息,您必须修改程序代码然后重新编译,例如简单 的"Hello!World!"程序就是如此:

Hello.java
package onlyfun.caterpillar;
public class Hello {
	public static void main(String[] args) {
		System.out.println("Hello!World!");
	}
}

如果日后想要改变"Hello!World!"为"Hello!Java!",您就要修改程序并重新编译。

对于日后可能变动的文字讯息,您可以考虑将讯息移至程序之外,方法是使用Java的java.util.ResourceBundle来作讯息绑定,首先 您要先准备一个.properties,例如:

messages.properties
onlyfun.caterpillar.welcome=Hello
onlyfun.caterpillar.name=World

.properties中撰写的是key、value,之后在程序中您可以使用key来取得对应的value值,接着改写Hello类别:

ResourceBundleDemo.java
package onlyfun.caterpillar;
import java.util.ResourceBundle;
public class ResourceBundleDemo {
	public static void main(String[] args) {
		ResourceBundle resource =
		ResourceBundle.getBundle("messages");
		System.out.print(resource.getString(
		"onlyfun.caterpillar.welcome") + "!");
		System.out.println(resource.getString(
		"onlyfun.caterpillar.name") + "!");
	}
}

ResourceBundle的getBundle()方法会取得一个ResourceBundle的实例,所给定的参数名称是讯息档案的主文件名,取得 ResourceBundle实例后,可以使用getString()指定key值来取得value值,执行结果如下:

Hello!World!

如果您日后想要改变显示的讯息,只要改变.properties的内容就可以了,例如可以改为:

messages.properties
onlyfun.caterpillar.welcome=Oh
onlyfun.caterpillar.name=Java

则直接执行程序就会显示新的讯息:

Oh!Java!