[英]java equivalent of ruby's ||= syntax
我是一个全新的java,来自红宝石世界。 我喜欢ruby的一件事是非常简洁的语法,例如|| =。
我当然意识到编译语言是不同的,但我想知道Java是否有类似的东西。
特别是,我在ruby中所做的一切都是这样的:
someVar ||= SomeClass.new
我认为这非常简洁,但功能强大,但到目前为止,我能想到实现相同目标的唯一方法是非常冗长:
if(someVar == null){
someVar = new SomeClass()
}
只是尝试改进我的Java-fu和语法肯定是我不支持的一个领域。
不,没有。 但要更换
if(someVar == null){
someVar = new SomeClass()
}
类似的东西被安排用于Java 7作为Elvis运营商 :
somevar = somevar ?: new SomeClass();
截至目前,您最好的选择是Ternary运营商 :
somevar = (somevar != null) ? somevar : new SomeClass();
我认为你能做的最好的是三元运算符:
someVar = (someVar == null) ? new SomeClass() : someVar;
Java中没有等价物。 部分原因是null
不被视为false
。
因此,即使存在逻辑OR分配关键字,您也必须记住:
Object x = null;
if (!x) { // this doesnt work, null is not a boolean
这看起来像是可以向SomeClass添加类似的方法
public static someClass enforce(someClass x) {
someClass r = x.clone();
if(r == null){
r = new SomeClass();
}
return r;
}
并称之为
someVar = SomeClass.enforce(someVar);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.