为了方便起见,我想将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)
}
我应该用什么来代替?????
和*****
?
答案 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)