请参阅以下代码:
class Ex() {
fun m(i: Object) {
}
}
class Ex2() {
fun m2() {
Ex().m(this)
}
}
如何使Ex #m接收Ex2实例,我现在可以将this.javaClass作为参数传递,但它太麻烦了,这是什么"这个"'的类
更新
将fun m(i: Object)
更改为fun m(i: Ex2)
可以修复当前示例,但我希望KotlinObjectClass使Ex#m接收变量类型参数
更新
使用Any
可以修复"变量类型"问题,但我希望更确切地说,我希望只接收类型KotlinClassObjectInstance
答案 0 :(得分:2)
您可以像这样使用reified type parameters:
class Ex() {
inline fun <reified T> m() {
println(T::class)
}
}
class Ex2() {
fun m2() {
Ex().m<Ex2>()
}
}
现在Ex2().m2()
将打印class Ex2
答案 1 :(得分:1)
这是你在寻找什么?
interface MyKotlin
class Ex {
fun m(i: MyKotlin) {
}
}
class Ex2 : MyKotlin {
fun m2() {
Ex().m(this)
}
}
class Ex3 : MyKotlin {
fun m3() {
Ex().m(this)
}
}