我想我得到了什么未经检查的演员意味着(从一个到另一个不同类型的演员),但是"检查"演员是什么意思?如何检查演员表以便我可以在Eclipse中避免此警告?
因此,我有一些带有这些签名的 Java 方法(为了简单起见,删除了注释和代码体):
public class JavaClass {
public static <E extends CharSequence> E join(E... array) { ... }
public static <E extends CharSequence> E join(CharSequence separator, E... array) { ... }
}
Run Code Online (Sandbox Code Playgroud)
我在 Kotlin 中有一些代码,它调用“join”方法:
class KtClass {
fun test(vararg array: String) {
JavaClass.join(*array)
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好; 它将传播可变参数并调用以前的方法签名。好的!
例如,如果我想使用“分隔符”参数调用后一个方法签名,就会出现问题:
class KtClass {
fun test(vararg array: String) {
JavaClass.join("<br>", *array)
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码无法编译。编译器无法决定调用哪个方法。错误:
错误:(5, 13) Kotlin:在未完成类型推断的情况下无法在以下候选者中进行选择:public open fun join(vararg array: String!): String!在 JavaClass 中定义 public open fun join(separator: CharSequence!, vararg array: …