java相当于ruby的|| =语法

时间:2010-03-29 17:55:08

标签: java syntax

我是一个全新的java,来自红宝石世界。我喜欢ruby的一件事是非常简洁的语法,例如|| =。

我当然意识到编译语言是不同的,但我想知道Java是否有类似的东西。

特别是,我在ruby中所做的一切都是这样的:

someVar ||= SomeClass.new

我认为这非常简洁,但功能强大,但到目前为止,我能想到实现同样目标的唯一方法是非常冗长:

if(someVar == null){
  someVar = new SomeClass()
}

只是尝试改进我的Java-fu和语法肯定是我不赞成的一个领域。

4 个答案:

答案 0 :(得分:10)

不,没有。但要替换

if(someVar == null){
  someVar = new SomeClass()
}

类似于Java 7的Elvis Operator计划类似的东西:

somevar = somevar ?: new SomeClass();

截至目前,您最好的选择是Ternary operator

somevar = (somevar != null) ? somevar : new SomeClass();

答案 1 :(得分:5)

我认为你能做的最好的是三元运算符:

someVar = (someVar == null) ? new SomeClass() : someVar;

答案 2 :(得分:1)

Java中没有相应的内容。部分原因是null不被视为false

因此,即使存在逻辑OR分配关键字,您也必须记住:

Object x = null;
if (!x) { // this doesnt work, null is not a boolean

答案 3 :(得分:0)

这看起来像是可以向SomeClass添加类似于

的方法
public static someClass enforce(someClass x)  {
 someClass r = x.clone();
 if(r == null){
  r = new SomeClass();
 }

 return r;
}

并称之为

someVar = SomeClass.enforce(someVar);