相关疑难解决方法(0)

可以从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 ×1