1 回答

TA贡献1786条经验 获得超13个赞
我正在使用
安卓工作室 3.2.1 ,
rxjava:2.2.0 ,
Kotlin 插件版本 1.3.11-release-Studio3.2-1
在输入*.kt
file:并在Android Studio之间Observable.unsafeCreate{}
按Ctrl+Space后,我会看到下一个建议:{}
当我输入*.java
文件时,Android Studio 会显示相同的建议。
我没有在 Android Studio Preferences 中进行任何配置更改。
我猜你是从下图完成列表中的第一项导入Observable
的rx
。尝试Observable
从io.reactivex
以下完成列表中突出显示的项目导入,它可能会有所帮助:import io.reactivex.Observable
.
要使用它,您需要导入 rxjava2:
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
编辑:
正如所发现的那样,代码完成对话框显示t ->是因为Action1.call(T t)调用了参数t。如果我们查看RxJava 1.3rx.Observable.unsafeCreate中方法的签名,我们可以看到它:
public static <T> Observable<T> unsafeCreate(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
OnSubscribe接口扩展Action1<Subscriber<? super T>,并Action1具有下一个签名:
public interface Action1<T> extends Action {
void call(T t);
}
因此调用了参数t,Android Studio 将其建议为t ->.
在RxJava2 中,我们有不同的签名:
public static <T> Observable<T> unsafeCreate(ObservableSource<T> onSubscribe) {...}
public interface ObservableSource<T> {
void subscribe(@NonNull Observer<? super T> observer);
}
我们看到 inObservableSource.subscribe()方法中的参数被调用observer了,所以我们把它看成observer->.
结论:IDEA 的建议是基于您作为 lambda 实现的功能接口方法的参数名称。
添加回答
举报