如果我在调用JVM时多次指定一个系统属性,那么当我检索该属性时,我实际上会得到哪个值?
java -Dprop=A -Dprop=B -jar my.jar
当我调用System.getProperty("prop");
时会得到什么结果?
在这方面的Java documentation并没有真正告诉我任何有用的东西。
在我对几台运行不同JVM的机器进行的非科学测试中,似乎最后一个值是返回的值(这实际上是我需要的行为),但我想知道是否在任何地方都正式定义了这种行为,或者它在JVM之间是否会有所不同?
3条答案
按热度按时间eqfvzcg81#
没有什么比写一个小类来看看它是如何工作的了。
当使用命令行编译和运行时
产出
这意味着值从左到右地放入表中,最后一个值覆盖前面的值。
请注意环境,Fedora 16,Linux 3.3.7,64位
tv6aics12#
java.util.System类由一个Properties类支持,它只是Hashtable的一个扩展。假设在作为参数传递给JVM时按顺序读取值,那么最后分配的值将是最终值。
nfeuvbwi3#
我不确定是否有针对Oracle的文档。
根据IBM JRE documents:
命令行上Java选项的顺序定义了启动期间哪些选项优先。最右边的选项优先于最左边的选项。