【问题标题】:Kotlin vararg: how to set null to vararg that don't throw NullPointerException?Kotlin vararg:如何将 null 设置为不抛出 NullPointerException 的 vararg?
【发布时间】:2022-01-24 03:13:36
【问题描述】:

我的功能:

    fun func(vararg objects: Any?) {
    }

当我调用func(null) 时,得到 Exception: Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, 参数对象。 而我看到反编译java代码是这样的:

   public static final void func(@NotNull Object... objects) {
      Intrinsics.checkNotNullParameter(objects, "objects");
      printer.v(new Object[]{objects});
   }

有没有办法解决这个问题?

【问题讨论】:

  • kotlin 的 vararg 中不能有 null,this kotlinlang 上的帖子证实了这一点。 Note that vararg parameters are, as a rule, never nullable, because in Java there is no good way to distinguish between passing null as the entire vararg array versus passing null as a single element of a non-null vararg array.
  • @Alex.T 这看起来像是对我的回答 :-)
  • 我已将其添加为答案

标签: kotlin nullpointerexception


【解决方案1】:

在 kotlin 的 vararg 中不能有 null,this post on kotlinlang 确认。

请注意,vararg 参数通常不能为空,因为在 Java 没有很好的方法来区分传递 null 作为 整个可变参数数组与将 null 作为 a 的单个元素传递 非空可变参数数组。

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2018-03-09
    相关资源
    最近更新 更多