Java调用方法并使用三元运算符并在参数中赋值?

Osc*_*mez 4 java variable-assignment ternary method-call

我正在审查一些代码,我发现了这个:

 public static doSomething(String myString, String myString2) {
        //Stuff
 }

 public static doAnotherThing(String myString) {
      return doSomething(myString = myString != null ? myString.toLowerCase(): myString, null)
 }
Run Code Online (Sandbox Code Playgroud)

这是如何工作的?我知道.toLowerCase结果字符串被分配给myString(是的我知道不好的做法,因为你不应该重新分配方法参数,事实上它们应该是最终的),但是我不太确定方法总是接收它需要的2个参数.

当myString为null或者至少我认为我这样做时,我知道它是如何工作的,因为三元有myString,null,但我不太清楚为什么当myString不为null时它会去那里?

tsk*_*zzy 5

括号来救援!

doSomething(myString = ( ( myString != null ) ? myString.toLowerCase() : myString ), null)
Run Code Online (Sandbox Code Playgroud)

要理解这一点,您需要了解两件事:

  • 三元运算符如何工作
  • 赋值运算符返回它正在分配的事物