Kotlin对Java Class <T>参数的引用

时间:2019-09-13 23:08:55

标签: java generics kotlin

为了方便起见,我想将Java方法包装在Kotlin类中。

RxJava中的Java方法:

public <T> Observable<T> on(Class<T> p_class, Object p_context){
   return this.on(p_class, p_context, 0);
}

在Whatever.kt中:

import com.dreamsocket.events.RxBus

val bus = RxBus()

fun on(c: ?????, o:Any): Observable<*****> {
    bus.on(c, o)
}

我应该用什么来代替?????*****

2 个答案:

答案 0 :(得分:2)

您要寻找reified type parameters吗?

inline fun <reified T> on(o:Any) : Observable<T> {
    return bus.on(T::class.java, o)
}

答案 1 :(得分:1)

我不确定我是否正确理解您,但是您似乎正在寻找基本的generic function

fun <T> on(c: Class<T>, o: Any): Observable<T> {
    return bus.on(c, o)
}

要获取Java Class<T>,您必须在所需的类名上调用::class.java,例如使用上面的功能:

val observable: Observable<String> = on(String::class.java, o)