我们的代码使用了很多系统属性,例如'java.io.tmpdir','user.home','user.name'等.我们没有为这些定义任何常量(我认为也不是java)或者处理它们的任何其他聪明之处,因此它们在整个代码中都是乱七八糟的文本.
String tempFolderPath = System.getProperty("java.io.tmpdir");
Run Code Online (Sandbox Code Playgroud)
每个人如何使用系统属性?
我会像处理代码中的任何其他字符串常量一样对待它,并为它定义一个常量变量.当然,在这种情况下,"java.io.tmpdir"不太可能改变,但你永远不会知道.(我并不是说Sun可能会改变"java.io.tmpdir"的含义,或者它指向的系统属性,但是您可能会改变您对需要阅读的系统属性的看法.)
如果你只使用一个类中的特定属性,那么我将在该类中定义常量.
private final String TEMPDIR = "java.io.tmpdir";
Run Code Online (Sandbox Code Playgroud)
如果您在不同的类中使用相同的属性,则可能需要定义自己的静态类来保存最常用的常量.
public final Class Prop {
public static final String TEMPDIR = "java.io.tmpdir";
...
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要使用该常量的任何地方只需使用它
System.getProperty(Prop.TEMPDIR);
Run Code Online (Sandbox Code Playgroud)
Apache Commons Lang包提供的SystemUtils解决了这个问题.
SystemUtils为大多数系统属性定义了常量,可以通过查找获得,例如:
import org.apache.commons.lang3.SystemUtils;
class Something
{
public static void main(String[] args){
System.out.println(SystemUtils.JAVA_IO_TMPDIR);
}
}
Run Code Online (Sandbox Code Playgroud)
也许,这是一种更清洁的方式.