将 null 作为 vararg 参数的一部分传递给 Kotlin 的 Java 方法

Passing null as part of vararg parameter to Java method from Kotlin

我在Java中有类似这个方法声明的东西。假设 class 被命名为 JavaClass:

public T execute(String s, Function<T> f, Object... args) {}

如果我想从 Kotlin 调用它(我的版本是 1.2.21),我可以写类似这样的东西:

val arg1 = ""
val arg2: String? = null
val javaObject = JavaClass()

javaObject.execute("some string", { print(it) }, arg1, arg2)

奇怪的是我在执行这段代码时得到了一个IllegalStateException。它说 arg2 must not be null。如果它说 args 不能为空,我能理解。但是考虑到这个调用会导致数组看起来像 ["", null],这在 Java 中完全没问题,这看起来很奇怪。

我需要能够将 null 值传递给此方法。我需要做什么来解决这个问题?

为此类调用抛出的 IllegalStateException 意味着该方法已 returned null 并且您正在将 return 值分配给 non-null 的变量类型。它与可变参数无关。