为什么我的方法看不到空对象

乌申娜·恩万扬武

我似乎不明白这一点。

public class NewClass {
    public static void main(String[] args) {
        Object obj = null;
        myMethod(obj);
    }

    public static void myMethod(Object... objArr) {
        if(objArr != null) {
            System.out.println("I am not null");
        }
    }
}

令我惊讶的I am not null它印在控制台上。为什么myMethod看不到传递的obj参数为null。

格特曼

方法签名Object... objArr引入了“ varargs”变量。在调用此方法的过程中传递的每个参数在该名称的数组中都有自己的插槽。

因此,当您传递一个时null,您将得到一个objArr长度为1的数组,其唯一元素是null数组本身不为null,元素为null。

JLS,第8.4.1节称这些“变量参数数量参数”:

方法或构造函数的最后一个形式参数是特殊的:它可以是可变arity参数,在类型之后用省略号表示。

可变arity方法的调用可能包含比形式参数更多的实际参数表达式。将评估所有与变量arity参数之前的形式参数不符的实际参数表达式,并将结果存储到一个数组中该数组将传递给方法调用(第15.12.4.2节)。

(强调我的)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的GridView对象在代码中看不到?

来自分类Dev

为什么我的代码看不到其主要方法?

来自分类Dev

为什么我看不到地图

来自分类Dev

为什么我看不到文件?

来自分类Dev

为什么我看不到广告?

来自分类Dev

我看不到为什么我收到细分错误

来自分类Dev

为什么“ treemap.nodes”看不到对我对象的更新?

来自分类Dev

为什么我看不到Facebook Graph API中对象的所有统计信息

来自分类Dev

为什么看不到Error对象的键?

来自分类Dev

Moq框架为什么看不到属于模拟对象类的方法?

来自分类Dev

为什么我看不到Numpy的DeprecationWarning?

来自分类Dev

Java为什么看不到我的注释?

来自分类Dev

为什么我看不到对DLL的任何请求

来自分类Dev

为什么我看不到滚动条的底部

来自分类Dev

jQuery Post-为什么我看不到响应?

来自分类Dev

为什么我在SlidingDrawer下看不到?

来自分类Dev

澄清glFrustum,以及为什么我看不到图像

来自分类Dev

为什么看不到我创建的菜单?

来自分类Dev

为什么我看不到自己的照片?

来自分类Dev

为什么我看不到整个文件?

来自分类Dev

为什么我看不到tortoiseHG的新分支?

来自分类Dev

为什么在cloudboost中看不到我的表?

来自分类Dev

XSL转换失败,我看不到为什么

来自分类Dev

为什么我看不到git命令的输出?

来自分类Dev

为什么我看不到Numpy的DeprecationWarning?

来自分类Dev

为什么我看不到粒子的动画?

来自分类Dev

为什么我看不到嵌套的参数?

来自分类Dev

为什么屏幕看不到我的别名?

来自分类Dev

为什么我看不到最后的 ECHO 语句?