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 實現的功能接口方法的參數名稱。
添加回答
舉報