如何将kotlin类或kotlin类实例作为参数传递

时间:2016-01-07 12:37:54

标签: java kotlin

请参阅以下代码:

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

2 个答案:

答案 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)
  }
}