我有一个不需要任何参数的 lambda 函数:
Observable.interval(5, TimeUnit.SECONDS)
.subscribe(x -> new CryptoCompareRxService().getHistoricalDaily("BTC", "USD")
.subscribe(historicalDaily -> System.out.println("historicalDaily = " + historicalDaily)));
我想用“()
”替换“x
”,因为它没用:
Observable.interval(5, TimeUnit.SECONDS)
.subscribe(() -> new CryptoCompareRxService().getHistoricalDaily("BTC", "USD")
.subscribe(historicalDaily -> System.out.println("historicalDaily = " + historicalDaily)));
但是当我这样做时,我得到一个错误:
Cannot infer functional interface type
为什么?
这是完整的类(class):
package com.tests.retrofitrxjava;
import com.tests.retrofitrxjava.rx.CryptoCompareRxService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import rx.Observable;
import java.util.concurrent.TimeUnit;
@SpringBootApplication
public class RetrofitRxjavaApplication {
public static void main(String[] args) {
SpringApplication.run(RetrofitRxjavaApplication.class, args);
Observable.interval(5, TimeUnit.SECONDS)
.subscribe(x -> new CryptoCompareRxService().getHistoricalDaily("BTC", "USD")
.subscribe(historicalDaily -> System.out.println("historicalDaily = " + historicalDaily)));
}
}
最佳答案
我认为你的错误是由于 RX 的变化 Observable在版本 2 中,订阅现在接受 Consumer接受参数
public final Disposable subscribe(Consumer<? super T> onNext)
Consumer<T> A functional interface (callback) that accepts a single value.
而不是 Action与版本 1 一样
public final Subscription subscribe(Action1<? super T> onNext)
Action1<T> extends Action A one-argument action.
关于java - 没有参数的 Lambda 函数 - 无法推断功能接口(interface)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65698493/