如果我在调用JVM时多次指定系统属性,当我检索属性时,我将实际得到哪个值?例如
java -Dprop=A -Dprop=B -jar my.jar
当我打电话给System.getProperty("prop");
时会有什么结果?
这方面的Java documentation并没有真正告诉我这方面有什么用处。
在我对运行不同JVM的几台机器进行的非科学测试中,似乎最后一个值是返回的值(这实际上是我需要的行为)但是我想知道这种行为是否在任何地方正式定义,或者它是否可以在JVM之间变化?
java.util.System类由Properties类支持,该类只是Hashtable的扩展。假设在作为参数传递给JVM时按顺序读取值,则分配的最后一个值将是最终值。
没有什么比写一个小班看看它是如何工作的了。
public class PropTest {
public static void main(String[] args) {
System.out.println(System.getProperty("prop"));
}
}
在使用命令行编译和运行时
java -Dprop=A -Dprop=B -Dprop=C PropTest
产生输出
C
这意味着值从左到右放入表中,最后一个值覆盖以前的值。
只是为了记录环境,Fedora 16,Linux 3.3.7,64位
> java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.1) (fedora-65.1.11.1.fc16-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)