为了账号安全,请及时绑定邮箱和手机立即绑定

如何将参数“t”替换为“className”?

如何将参数“t”替换为“className”?

慕森王 2022-05-12 17:10:57
Android Studio 3.2.1Kotlin plugin version 1.3.11-release-Studio3.2-1ext.kotlin_version = '1.3.11' RxJava 1.3.0 例如,当我输入*.ktfile:Observable.unsafeCreate{}然后按Ctrl+Spacebetween{}时,IntellijIdea 建议我输入 symbol t ->,但是当我在.java文件中执行相同操作时,结果是subscriber ->:*.kt 文件:fun anyFunc(): Observable<Boolean>{    return Observable.unsafeCreate { t -> t }}*.java 文件:public void anyFunc() {    Observable.unsafeCreate(subscriber -> {});}如何在 Kotlin 文件中进行与 Java 文件中相同的建议输入行为?[更新] 似乎是因为call()方法 in rx.functions.Func1,它有参数t:public interface Func1<T, R> extends Function {     R call(T t); }
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

我正在使用

安卓工作室 3.2.1 ,

rxjava:2.2.0 ,

Kotlin 插件版本 1.3.11-release-Studio3.2-1

在输入*.ktfile:并在Android Studio之间Observable.unsafeCreate{}Ctrl+Space后,我会看到下一个建议:{}

//img1.sycdn.imooc.com//627ccf5000017a4f19170527.jpg

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

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

我猜你是从下图完成列表中的第一项导入Observablerx。尝试Observableio.reactivex以下完成列表中突出显示的项目导入,它可能会有所帮助:import io.reactivex.Observable.

//img1.sycdn.imooc.com//627ccf5c0001c63912000522.jpg

要使用它,您需要导入 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 实现的功能接口方法的参数名称。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号