大可制作:QQ群:31564239(asp|jsp|php|mysql)

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!