用于存储所有已定义字符串的Java约定

Stu*_*Cat 1 java convention

什么是Java存储预定义字符串集的主要约定?现在我有一个包含我使用的所有字符串的类,但感觉就像有一个更好的方法来做到这一点.

这就是我在my_strings.java类中所做的事情

public final static String s1 = "test";
public final static String s2 = "test2";
...
Run Code Online (Sandbox Code Playgroud)

ζ--*_*ζ-- 9

您可以使用资源包.创建一个名为messages.propertiesin 的文件src或与所需包对应的子目录,并按以下方式向其中添加字符串.不需要引用.

ClassThatUsesAString.stringName=foo
AnotherClass.stringName=bar
AnotherClass.anotherString=baz
Run Code Online (Sandbox Code Playgroud)

然后,您可以按如下方式访问这些字符串

ResourceBundle rsrc = ResourceBundle.getBundle("messages");
Run Code Online (Sandbox Code Playgroud)

然后:

rsrc.getString(stringName);
Run Code Online (Sandbox Code Playgroud)

例如,如果FooClass需要string quxString,则添加到messages.properties:

FooClass.quxString=waldo was here
Run Code Online (Sandbox Code Playgroud)

注意缺少报价.现在抓住它:

rsrc.getString("FooClass.quxString");
Run Code Online (Sandbox Code Playgroud)

这不会强制执行类边界,并且只是为了方便而使用类命名.

如果字符串紧密相关,则枚举可能更好,直接或指定不同本地化的消息名称(即枚举包含"ECONNREFUSED"和"ECONNABORTED",并且这些映射映射到"连接被拒绝"和"连接已中止"捆绑和"conexiónrechazada"/"Conexiónabortada"在另一个捆绑

Eclipse用户:Eclipse使用Source→Externalize Strings自动完成(虽然以更复杂的方式)