gpt4 book ai didi

java - 如何将参数 "t"替换为 "className"?

转载 作者:IT老高 更新时间:2023-10-28 13:32:30 30 4
gpt4 key购买 nike

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

例如当我输入 *.kt 文件时:Observable.unsafeCreate{} 然后在 之间按 Ctrl+Space {} ,然后 IntellijIdea 建议我输入符号 t ->,但是当我在 .java 文件中执行相同操作时,结果是 subscriber -> :

*.kt 文件:

fun anyFunc(): Observable<Boolean>{
return Observable.unsafeCreate { t -> t }
}

enter image description here

*.java 文件:

public void anyFunc() {
Observable.unsafeCreate(subscriber -> {});
}

如何在 Kotlin 文件中实现与 Java 文件中相同的建议输入行为?


[更新]似乎是因为 rx.functions.Func1 中的 call() 方法,它有参数 t:

public interface Func1<T, R> extends Function { 
R call(T t);
}

最佳答案

我正在使用

Android Studio 3.2.1,

rxjava:2.2.0,

Kotlin plugin version 1.3.11-release-Studio3.2-1

输入 *.kt 后文件:Observable.unsafeCreate{}并在 {} 之间按 Ctrl+Space Android Studio 向我展示了下一个建议:

enter image description here

当我输入 *.java 时,Android Studio 会显示相同的建议文件。

我没有在 Android Studio Preferences 中进行任何配置更改。

我猜你正在导入 Observable来自 rx - 下图中完成列表中的第一项。尝试导入Observable来自 io.reactivex - 下面完成列表中突出显示的项目,它可能会有所帮助:import io.reactivex.Observable .

enter image description here

要使用它你需要导入 rxjava2:

implementation 'io.reactivex.rxjava2:rxjava:2.2.0'

编辑:

据了解,代码完成对话框显示 t ->因为 Action1.call(T t) 中的参数调用t .如果我们查看 rx.Observable.unsafeCreate 的签名,我们可以看到它。 RxJava 1.3 中的方法:

public static <T> Observable<T> unsafeCreate(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}

OnSubscribe接口(interface)扩展 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);
}

我们在 ObservableSource.subscribe() 中看到了这一点方法参数调用observer ,所以我们将其视为 observer-> .

结论:IDEA 的建议是基于您作为 lambda 实现的函数式接口(interface)方​​法的参数名称。

关于java - 如何将参数 "t"替换为 "className"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54249968/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com