【发布时间】:2017-07-14 09:34:58
【问题描述】:
java中是否存在任何配置标志null == null将被比较为false或true?
现在它总是结果为真。
用例是将以下逻辑与 mysql 对齐,以便返回相同的结果:
在java中
System.out.println(null == null); //true
在mysql中
select if(null = null, 'true', 'false'); -- false
换句话说,java 中是否有一个配置功能,它允许配置比较的结果逻辑(例如 Double.NEGATIVE_INFINITY == Double.NaN 的输出)?
Configuration table
Configuration flag | Default | Set Value
-------------------------------------- | ------ | --------
null==null | true | false
Double.NEGATIVE_INFINITY == Double.NaN | false | false
true = true | true | true
.....
那么它可以通过一些标志来配置吗?
【问题讨论】:
-
那个选项是完全危险的,因为这样的事情对代码来说是不透明的。 Java 中的所有内容都会检查可空性,现在想象一下这段代码突然停止工作:
if (arg == null) { return 0; } else { return arg.hashCode(); },因为有人只是“喜欢它”。 -
有没有这种配置标志的编程语言?
-
@AdamSiemion #define TRUE FALSE ?
-
@wings 与
null == null是真还是假有什么关系? -
@wings 并不意味着将 true 定义为 false,只要它很少需要,但它也可以添加到配置选项中。它可能是一个配置表,请通过添加表查找更新的问题。