gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:11 27 4
gpt4 key购买 nike

我好像没看懂

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时,你得到一个长度为1的数组objArr,它的唯一元素是null。数组本身不为空,元素为。

JLS, Section 8.4.1调用这些“变量参数”:

The last formal parameter of a method or constructor is special: it may be a variable arity parameter, indicated by an ellipsis following the type.

Invocations of a variable arity method may contain more actual argument expressions than formal parameters. All the actual argument expressions that do not correspond to the formal parameters preceding the variable arity parameter will be evaluated and the results stored into an array that will be passed to the method invocation (§15.12.4.2).

(强调我的)

关于java - 为什么我的方法看不到空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com