在将 kotlin 与 Java 一起使用时,我无法强制执行类型安全。请参阅下面显示设置的代码片段,缺少编译错误是问题所在。
// kotlin functions
inline fun <reified T:Any> k() = T::class
// A<T> is a Java class
fun <T:Any> a(clazz:KClass<T>): A<T> {
return A<T>(clazz.java)
}
// java interface
interface DoA<T> {
void doThis(A<T> a);
}
// kotlin class implements java interface
class SomeDoA : DoA<String> {
init {
doThis(a(k<Int>())); // I'd expect a compile error here, but none
}
}