将 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 的变量类型。它与可变参数无关。
我在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 的变量类型。它与可变参数无关。