我正在尝试订阅可观察的,例如:
List<String> colors = Arrays.asList("RED", "BLACK", "WHITE", "GREEN", "YELLOW", "BROWN", "PURPUL", "BLUE");
Observable.just(colors).subscribe(s -> System.out.println(s));
它工作正常,但是如果我使用方法引用编译器会给出错误"void 不是函数迭代面">
谁能解释一点点?根据我,订阅者接受消费者功能接口,它不返回任何内容,但我们可以打印流数据,例如:
Observable.just(colors).subscribe(s -> System.out::println);// NOT COMPILE
您的方法引用语法错误。这样改变它,
Observable.just(colors).subscribe(System.out::println);
只需以下几点就足够了:
Observable.just(colors).subscribe(System.out::println);
在编写方法引用时,您不必在此之前提及 arg。
'subscriber' 方法将 Consumer(一个函数接口(作为一个参数,它有一个抽象方法 void accept(T t(。所以在这里我们可以传递 lambda 表达式。
正如我们所知,'println' 返回 void,因此我们可以在这里使用它。
subscribe(s -> System.out.println(s((; 将给我们正确的输出。 但是,如果我们想将其编写为方法引用,则无需将参数"s"作为println方法。 这就是Java中方法引用语法的典型方式。