Android 尝试将kotlin方法转换为使用RxJava的java

Android 尝试将kotlin方法转换为使用RxJava的java,android,kotlin,rx-java,Android,Kotlin,Rx Java,获取消息的签名 Android Studio 3.1 RC 2 kotlin 1.2.30 单个fetchMessage(最终字符串messageId); 我正在尝试转换为Java的kotlin代码。然而,我不知道回报在哪里?因为我对kotlin和lambda还不熟悉 Single<Response> fetchMessage(final String messageId); private fun getMessage(messageId:String):可观察{ 返回存储库

获取消息的签名

Android Studio 3.1 RC 2
kotlin 1.2.30
单个fetchMessage(最终字符串messageId);
我正在尝试转换为Java的kotlin代码。然而,我不知道回报在哪里?因为我对kotlin和lambda还不熟悉

Single<Response> fetchMessage(final String messageId);
private fun getMessage(messageId:String):可观察{
返回存储库
.fetchMessage(messageId)
.平面图{
Single.fromCallable({
更新(messageId、it、State.COMPLETED)
完成
})
}
.TooObservable()文件
}
这是我试图转换它的尝试。但是,编译器抱怨缺少返回

private fun getMessage(messageId: String): Observable<State> {
        return repository
                .fetchMessage(messageId)
                .flatMap {
                    Single.fromCallable<State>({
                        update(messageId, it, State.COMPLETED)
                        State.COMPLETED
                    })
                }
                .toObservable()
}
公共可观察翻译(字符串messageId){
返回存储库
.fetchMessage(messageId)
.flatMap(新函数1(){
@凌驾
公共单次呼叫(最终响应){
Single.fromCallable(new Callable()){
@凌驾
公共状态呼叫(){
更新(messageId,response,State.COMPLETED);
返回状态。已完成;
}
});
}/*抱怨此处无法返回*/
})
.toObservable();
}

非常感谢您的建议,因为它缺少返回语句。应该是

public Observable<TranslationChatState> translate(String messageId) {
        return repository
                .fetchMessage(messageId)
                .flatMap(new Func1 <Response, Single<State >>() {
                    @Override
                    public Single<State> call(final Response response) {
                        Single.fromCallable(new Callable<State>() {
                            @Override
                            public State call() {
                                update(messageId, response, State.COMPLETED);
                                return State.COMPLETED;
                            }
                        });
                    } /* complains about no return here */
                })
                .toObservable();
}
公共单次呼叫(最终响应){
返回Single.fromCallable(newcallable()){

,因为它缺少return语句。它应该是

public Observable<TranslationChatState> translate(String messageId) {
        return repository
                .fetchMessage(messageId)
                .flatMap(new Func1 <Response, Single<State >>() {
                    @Override
                    public Single<State> call(final Response response) {
                        Single.fromCallable(new Callable<State>() {
                            @Override
                            public State call() {
                                update(messageId, response, State.COMPLETED);
                                return State.COMPLETED;
                            }
                        });
                    } /* complains about no return here */
                })
                .toObservable();
}
公共单次呼叫(最终响应){
返回Single.fromCallable(newcallable()){

谢谢,这很有效。很容易阅读java代码。但是,kotlin代码中的返回语句在哪里?它仍然在那里。lambda的最后一个值是隐式返回。谢谢,这很有效。很容易阅读java代码。但是,kotlin代码中的返回语句在哪里?它仍然在那里。lambda的最后一个值是隐式返回返回。