Java方法具有IF-THEN-ELSE语句的功能

Java方法具有IF-THEN-ELSE语句的功能,java,Java,在Oracle/PLSQL中是否有类似java的解码函数中具有IF-THEN-ELSE语句功能的方法?不是 表情?多蒂斯:艾尔塞多这是相似的 i==0?true:false是您想要的吗?我希望JAVA中没有这种方法,如果您的大小写只有byte/short/char/int,您可以使用if-then-else或简单地切换块。没有,但您要求的是这样的东西: interface CaseItem<K, V> { boolean isDefaultCondition();

在Oracle/PLSQL中是否有类似java的解码函数中具有IF-THEN-ELSE语句功能的方法?

不是

表情?多蒂斯:艾尔塞多这是相似的


i==0?true:false是您想要的吗?

我希望JAVA中没有这种方法,如果您的大小写只有byte/short/char/int,您可以使用if-then-else或简单地切换块。

没有,但您要求的是这样的东西:

interface CaseItem<K, V> {
    boolean isDefaultCondition();

    @NotNull
    K conditionValue();

    V calculateResult();
}
您在问题评论中提供的:

您可以在SQL语句中使用decode函数,如下所示:

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);

如果您正在寻找一个类似于地图的集合,它只在请求时创建它的值,但缓存以前请求的值,请查看Google Guava和


否则,使用switch或其他基于语言的条件语句,因为它将使您的代码更具可读性和可维护性。

我不确定您真正想要/需要的是什么。简单的if{…}else{…}有什么错?@BalusC请看这个。这不是比if{…}else{…}或enum(从Java 5开始)或字符串(从Java 7开始)更简单吗?解码的好处是,每个值只在需要时计算。但在您的解决方案中,必须先计算值。在此解决方案中,如果需要,最多计算一个值。
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);