相关疑难解决方法(0)

如何在Java中获取第一个非null值?

是否有Java等效的SQL COALESCE函数?也就是说,有没有办法返回几个变量的第一个非空值?

例如

Double a = null;
Double b = 4.4;
Double c = null;
Run Code Online (Sandbox Code Playgroud)

我想无论如何都将返回的第一个非NULL值的语句a,b以及c-在这种情况下,它会返回b,或4.4.(类似于sql方法 - 返回COALESCE(a,b,c)).我知道我可以用以下方式明确地做到:

return a != null ? a : (b != null ? b : c)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有任何内置的,可接受的功能来实现这一目标.

java coalesce

143
推荐指数
10
解决办法
8万
查看次数

可以从null转换为int吗?

我知道当我读到这个答案时,我会发现我忽略了一些在我眼前的东西.但我花了最后30分钟试图弄清楚自己没有结果.

所以,我在Java 6中编写了一个程序,并发现了一些(对我来说)奇怪的功能.为了尝试隔离它,我做了两个小例子.我首先尝试了以下方法:

private static int foo()
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

并且编译器拒绝它:类型不匹配:无法从null转换为int.

这对我很好,它尊重我熟悉的Java语义.然后我尝试了以下内容:

private static Integer foo(int x)
{
    if (x < 0)
    {
        return null;
    }
    else
    {
        return new Integer(x);
    }
}

private static int bar(int x)
{
    Integer y = foo(x);

    return y == null ? null : y.intValue();
}

private static void runTest()
{
    for (int index = 2; index > -2; index--)
    {
        System.out.println("bar(" + index + ") = " + bar(index));
    }
}
Run Code Online (Sandbox Code Playgroud)

编译没有错误!但是,在我看来,行中应该存在类型转换错误 …

java

53
推荐指数
4
解决办法
7万
查看次数

标签 统计

java ×2

coalesce ×1