void 不是一个功能接口

San*_*ari 7 java lambda java-8 rx-java2

我正在尝试订阅可观察对象,例如:

List<String> colors = Arrays.asList("RED", "BLACK", "WHITE", "GREEN", "YELLOW", "BROWN", "PURPUL", "BLUE");
    Observable.just(colors).subscribe(s -> System.out.println(s));
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我使用方法引用编译器会给出错误“void is not afunctional iterface”

谁能解释得有点深?根据我的说法,订阅者接受消费者功能接口,它不返回任何内容,但我们可以打印流数据,例如:

 Observable.just(colors).subscribe(s -> System.out::println);// NOT COMPILE
Run Code Online (Sandbox Code Playgroud)

Rav*_*ala 9

您的方法引用语法错误。改成这样

Observable.just(colors).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

  • 或者另一种方式(lambda)是`Observable.just(colors).subscribe(s -&gt; System.out.println(s));` (2认同)