簡體   English   中英

在Java中將if / else-if / else轉換為三元運算符

[英]Converting if/else-if/else to ternary operator in Java

我正在嘗試使用三元運算符將if-else語句轉換為相等的語句?-:

我的目標是轉換此代碼:

if (s instanceof Class1) {
    do_something((Class1) s);
} else if (s instanceof Class2) {
    do_something_else((Class2) s);
} else {
    do_that((Class3) s);
}

我做了類似這樣的事情:

(s instanceof Class1) ? do_something((Class1) s):
                     ((s instanceof Class2) ? (do_something_else(Class2) s))) :
                     (do_that((Class3) s));

我調用的三種方法只返回void。

我寫這個時遇到一些語法錯誤。 有人可以幫助或解釋我錯過了什么嗎? 提前致謝

有兩個原因你不能這樣做:

  1. 您不能僅使用任何獨立表達作為聲明。 與某些語言(例如JavaScript)不同,Java沒有“表達式語句”的一般概念,只有一些表達式也允許作為語句(如方法調用)。

  2. 條件運算符必須有結果,但如果您的方法void ,則它們不會產生結果。

只需保留if / else


旁注:一系列帶有instanceofif / else傾向於提出一個設計問題,它可能以更清潔的方式解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM