【问题标题】:Is JAVA_OPTIONS boolean case sensitive?JAVA_OPTIONS 布尔值是否区分大小写?
【发布时间】:2022-01-16 10:56:48
【问题描述】:

我正在尝试将 JAVA_OPTIONS 设置为我的应用程序

-Djava.net.preferIPv4Stack=true

我也可以将它设置为-Djava.net.preferIPv4Stack=True,大写T吗?案件重要吗?

【问题讨论】:

  • 根据经验,必须将属性设置为某些允许的值 (docs.oracle.com/javase/8/docs/api/java/net/doc-files/…),并按字面意思书写。
  • 会不会因为大写T而无法启用?
  • 我不知道。运行程序时是否会出现一些错误消息?
  • 不,当我运行应用程序时它不会抛出错误消息。

标签: java javaoptions


【解决方案1】:

要读取布尔系统属性,您通常会使用

Boolean.getBoolean("argument.name");

其中:

当且仅当由参数命名的系统属性时返回 true 存在并且等于字符串“true”。 (从版本开始 JavaTM平台的1.0.2,这个字符串的测试是不区分大小写的。)

(Reference)

这完全取决于开发人员(也可以使用System.getProperty,然后以他自己的方式将结果转换为布尔值),但我会说在大多数情况下,我会假设它不区分大小写。

【讨论】:

    【解决方案2】:

    这是一个优秀的程序员优秀的设计师之间的区别很重要的时候:

    • 一个好的程序员会确保这个参数化(-Djava.net.preferIPv4Stack=True)在当前环境中工作:例如,如果你使用 Open JDK 15,你应该浏览源代码,你会看到 java.net.PlainSocketImpl 类,在使用该参数的地方,委托Boolean.parseBoolean,它会进行不区分大小写的解析。

    • 相反,优秀的设计师会确保设置参数化,以便适用于所有环境(Open JDK、Oracle JDK、版本 15、未来版本、Windows、Linux 等),坚持public documentation,它规定只能使用“真”或“假”(或不存在)值。

    总结:如果您使用的是 Open JDK 15,则“True”或“true”值之间没有区别,但您不能确定在未来的版本中这种区别是否重要。我建议您坚持记录在案的允许值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2012-03-11
      • 2013-03-16
      • 2012-08-07
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多