我有一个构造函数,它需要一些这样的参数
option.foldLeft(defaultResult)((d,x) => if (condition) valueToResult(x) else d)
当我尝试使用像
这样的新运算符为这个类创建一个对象时public XYZ(Long param1, boolean param2, Long param3){
//...
}
(注意假,4之间没有空格)
我的param3总是作为null传递给java 7中的构造函数。但是当我尝试在IntelliJ Idea中调试时计算相同的表达式时,对象创建正常工作。
这种行为是否由于逗号运算符而发生? 。我试过阅读java语言规范,但无法找到任何与此相关的内容。更多的内容写在几个地方,而对象创建逗号(,)作为分隔符而不是操作符。
如果我在params之间放置正常间距,一切正常。有人可以解释这种行为。如果逗号作为运算符工作,那么在创建对象时不应该有编译时错误吗?
修改
感谢每一个人的答案。我无法在生产环境之外复制问题,也许我忽略了一些重要的事情。 请将此问题标记为已结束。
答案 0 :(得分:2)
这就是我的尝试:
1
false
2
输出是:
{{1}}
也许您需要向我们提供更多信息?
答案 1 :(得分:2)
Java是强类型语言。在您的代码示例中,这意味着如果您的类具有包含3个参数的单个构造函数,则编译器确保必须使用3个参数显式调用构造函数。将逗号视为操作符的运行时情况不会发生,因为在这种情况下结果只有2个参数。
在弱类型语言(如JavaScript)中,两个参数而不是三个参数可以生成null作为第三个参数,但不是Java。
所以问题的答案是这在Java中不会发生。