我创建了一个扩展函数,
fun <T> Observable<T>.subscribeWithErrorHandling(onNext: (T) -> Unit ,onError: ((throwable: Throwable) -> Unit)? = null): Subscription {
//doing stuff
}
在kotlin课程中,我将能够以这种方式使用它
observable.subscribeWithErrorHandling(...)
现在,我想在我的java类中使用这个函数。 我已经看到你可以静静地称它为:
MyExtensionFile.subscribeWithErrorHandling
但在我的情况下,你需要别的东西,因为它是RX流的中间。这就是我坚持的部分。这有可能吗?或者没办法从java代码做那样的事情?
答案 0 :(得分:0)
简单的回答。 No
。
解释 - 我认为这是不可能的,因为这意味着你要扩展抽象的Observable
类。 Kotlin扩展通过移出继承树来添加相同的功能,并且在Java中你几乎坚持继承。
所以剩下的唯一选择就是扩展基类Observable
类并创建自己的实现,我认为在你的情况下是不需要的。
一个简单的解决方案是为Java创建一个新方法,它可以采用可观察的方法并执行所需的逻辑。或者使用Observable
实例作为其实例成员创建自定义类,然后在其中编写所需的方法(标准OOPS方式)。然后可以从Kotlin以及Java使用此代码。
编辑:我相信您已经知道这一点,但仍会指向您question。
答案 1 :(得分:0)
扩展功能是kotlin优于Java的优势之一。 kotlin中的编码为您提供了这些优势,但遗憾的是,这并不意味着您可以在Java代码中使用kotlin语言功能。
解决方案:将您希望使用扩展功能的模块移植到kotlin。