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 次 |
最近记录: |