是否有任何方法具有Java中IF-THEN-ELSE語句的功能,如Oracle/PLSQL中的decode
函數?Java方法具有IF-THEN-ELSE語句的功能
回答
沒有,但是你所要求的是這樣的:
interface CaseItem<K, V> {
boolean isDefaultCondition();
@NotNull
K conditionValue();
V calculateResult();
}
public <T, V> V decode(@NotNull T input, CaseItem<K, V> caseItems...) {
if (caseItem == null) {
return null;
}
for (CaseItem<K, V> caseItem : caseItems) {
if (input.equals(caseItem.conditionValue()) {
return caseItem.calculateResult();
} else if (caseItem.isDefaultCondition()) {
return caseItem.calculateResult();
}
}
return null;
}
在此解決方案中,最多隻需計算一個單一值。 – 2012-02-21 05:18:56
不是
表達式? Dothis:別的事情有點類似。
i == 0?真:假是你在找什麼?
我希望在JAVA中不存在這樣的方法,如果你的情況只是byte/short/char/int
,你可以使用if-then-else
或者簡單地切換塊。
自Java 5以來,自Java 5以來,甚至是'String',或'enum'。 – BalusC 2012-02-21 05:10:03
從您的問題意見提供the link:
您可以使用解碼功能在SQL語句中如下:
SELECT supplier_name, decode(supplier_id, 10000, 'IBM', 10001, 'Microsoft', 10002, 'Hewlett Packard', 'Gateway') result FROM suppliers;
最接近的將是條件運算符:
String supplierName = supplierId == 10000 ? "IBM"
: supplierId == 10001 ? "Microsoft"
: supplierId == 10002 ? "Hewlett Packard"
: "Gateway";
或者,也許一個(靜態)詞典/圖:
Map<Integer, String> suppliers = new HashMap<Integer, String>();
suppliers.put(10000, "IBM");
suppliers.put(10001, "Microsoft");
suppliers.put(10002, "Hewlett Packard");
suppliers.put(null, "Gateway");
// ...
String supplierName = suppliers.get(supplierId);
if (supplierName == null) supplierName = suppliers.get(null);
關於解碼的好處是每個值只在需要時才計算。但在你的解決方案中,值必須先計算出來。 – 2012-02-21 05:18:11
如果你正在尋找一個地圖就像集合,只根據請求創建它的值,但緩存先前請求的值,看一下Google Guava Cache和LoadingCache。
否則,請轉到switch
或其他基於語言的條件語句,因爲這會使您的代碼更具可讀性和可維護性。
- 1. 是否有可能具有jQuery功能的OR語句?
- 2. 如何使用功能/ SWITCH CASE語句方法在Java中
- 3. VB.NET'具有'語句性能?
- 4. 如果語句的功能在java
- 5. JavaScript是否具有與LINQ的Select語句類似的功能?
- 6. 從SQL語句的功能
- 7. OOP功能和if語句
- 8. 功能從select語句
- 9. 功能與if/else語句
- 10. if語句內部功能
- 11. 功能switch語句在Javascript
- 12. 預處理語句功能
- 13. IF else語句功能
- 14. 批處理文件具有If-Else語句的替代方法?
- 15. 具有咖喱功能的Scala無點呼叫語法
- 16. Java方法和返回語句
- 17. Java - 在If語句中使用方法
- 18. java布爾方法返回語句
- 19. Java方法 - 缺少返回語句
- 20. Java:具有與ArrayList相似的方法/功能的二維數組
- 21. Java:切換語句不能正確調用方法
- 22. Yield語句不能匿名方法
- 23. java是否具有鉗位功能?
- 24. 如何比較Java中的功能相等的SQL語句?
- 25. 具有通用功能的方法的工廠模式
- 26. 具有類似功能的組功能
- 27. Android Java日曆替代方案,具有以下功能
- 28. 如何創建一個具有goto語句的主菜單功能?
- 29. Select語句,需要像where語句中的功能案例
- 30. TSQL SELECT語句具有@varible
我不確定你真的問/需要什麼。簡單的「if {...} else {...}」有什麼問題? – BalusC 2012-02-21 04:54:42
@BalusC請看看這個。 http://www.techonthenet.com/oracle/functions/decode.php。這不是比'if {...} else {...}'簡單嗎? – Bishan 2012-02-21 04:59:25