使用Java系统属性的最佳实践


问题内容

我们的代码使用了许多系统属性,例如’java.io.tmpdir’,’user.home’,’user.name’等。我们在任何地方都没有为这些常量定义任何常量(我认为Java也没有)或处理它们的任何其他聪明的事情,因此它们在整个代码中都是乱七八糟的。

String tempFolderPath = System.getProperty("java.io.tmpdir");

每个人如何使用系统属性?


问题答案:

我将把它当作您遍历整个代码的任何其他String常量,并为其定义一个常量变量。当然,在这种情况下,“
java.io.tmpdir”不太可能更改,但您永远不会知道。(我并不是说Sun可能会更改“
java.io.tmpdir”的含义或其所指向的系统属性,但是您可能会改变主意,以了解需要读取的系统属性。)

如果您只在一个类中使用特定属性,那么我将在该类中定义常量。

private final String TEMPDIR = "java.io.tmpdir";

如果在不同的类中使用相同的属性,则可能需要定义自己的静态类来保存最常使用的常量。

public final Class Prop {
    public static final String TEMPDIR = "java.io.tmpdir";
    ...
}

然后,在任何需要使用该常量的地方,只需使用

System.getProperty(Prop.TEMPDIR);