Nic*_*hek 14 java intellij-idea kotlin android-studio android-studio-3.0
Android Studio 3.2.1
Kotlin plugin version 1.3.11-release-Studio3.2-1
ext.kotlin_version = '1.3.11'
RxJava 1.3.0
Run Code Online (Sandbox Code Playgroud)
例如,当我输入*.kt文件:Observable.unsafeCreate{}然后按两次Ctrl+Space之间{},然后IntellijIdea建议我键入符号t ->,但是当我在.java文件中执行相同的操作时结果是subscriber ->:
*.kt 文件:
fun anyFunc(): Observable<Boolean>{
return Observable.unsafeCreate { t -> t }
}
Run Code Online (Sandbox Code Playgroud)
*.java 文件:
public void anyFunc() {
Observable.unsafeCreate(subscriber -> {});
}
Run Code Online (Sandbox Code Playgroud)
如何在Kotlin文件中创建与Java文件中相同的建议输入行为?
[UPDATE]
似乎是因为call()方法rx.functions.Func1,它有param t:
public interface Func1<T, R> extends Function {
R call(T t);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用
Android Studio 3.2.1,
rxjava:2.2.0,
Kotlin插件版本1.3.11-release-Studio3.2-1
输入*.kt文件后:在Android Studio 之间Observable.unsafeCreate{}按Ctrl + Space{}显示下一个建议:
当我在*.java文件中输入时,Android Studio会显示相同的建议.
我没有在Android Studio偏好设置中进行任何配置更改.
我想你是Observable从rx以下图片中的完成列表中的第一个项目导入的.尝试Observable从io.reactivex下面的完成列表中的 - 突出显示的项目导入,它可能会有所帮助:import io.reactivex.Observable.
要使用它,您需要导入rxjava2:
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
Run Code Online (Sandbox Code Playgroud)
编辑:
正如计算出的代码完成对话框所示,t ->因为Action1.call(T t)调用了参数t.如果我们查看RxJava 1.3中rx.Observable.unsafeCreate方法的签名,我们可以看到它:
public static <T> Observable<T> unsafeCreate(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
Run Code Online (Sandbox Code Playgroud)
OnSubscribe接口扩展Action1<Subscriber<? super T>,并Action1具有下一个签名:
public interface Action1<T> extends Action {
void call(T t);
}
Run Code Online (Sandbox Code Playgroud)
因此调用参数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);
}
Run Code Online (Sandbox Code Playgroud)
我们看到在ObservableSource.subscribe()方法参数中被调用observer,所以我们将其视为observer->.
结论:IDEA的建议基于您实现为lambda的Functional接口方法的参数名称.
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |