gpt4 book ai didi

java - 为什么将 null 传递给 varargs 会给出长度 1?

转载 作者:搜寻专家 更新时间:2023-11-01 01:02:08 27 4
gpt4 key购买 nike

我一直在我的方法中使用 Java 的可变参数,并通过传入 null 作为参数来测试它们:

public void method(Object A, Object...b) {
if(A == null || b == null || b.length == 0) return;
...(something that invokes b)...

public void test() {
method(new Object(), null)
...

在该方法的开头,我检查了 null 作为参数,甚至检查了长度是否为 0。但是由于 NullPointerException 导致测试一直失败,我运行了调试器, b 的长度为 1!它甚至说,当我点击 b 的显示三角形时,

all elements are null

我最终通过检查长度 1 和元素 0 是否为 null 解决了这个问题,但是有没有人解释为什么 Java 这样做?谢谢!

最佳答案

因为您传递的是 null 值。

如果您希望您的可变参数方法接收一个空数组,要么

  1. 显式传递:

    method(new Object(), new Object[0])
  2. 根本不传递任何东西:

    method(new Object())

选项 2 会更地道。

关于java - 为什么将 null 传递给 varargs 会给出长度 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30308839/

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