发布于2021-08-06 00:21 阅读(230) 评论(0) 点赞(1) 收藏(2)
谁能解释为什么该mono1()
方法在 Eclipse 中没有显示错误,并且在 Eclipse 中运行,但不能使用 Maven 或javac
. 为什么该mono2()
方法在 Eclipse 和 Maven/ 中都可以javac
?
import java.util.function.Function;
import lombok.AllArgsConstructor;
import lombok.Data;
import reactor.core.publisher.Mono;
public class IncompatibleTypes {
public static void main(String[] args) {
mono1().doOnNext(a -> System.out.println("mono1: " + a)).subscribe();
mono2().doOnNext(a -> System.out.println("mono2: " + a)).subscribe();
}
static Mono<A> mono1() {
return Mono.just("mono1")
.flatMap(flatMapper(A.class))
.doOnError(System.err::println); // Maven/javac errors on this line
// Eclipse is fine with it
}
static Mono<A> mono2() {
Mono<A> mono = Mono.just("mono2")
.flatMap(flatMapper(A.class)); // compiles fine in Eclipse, Maven, javac
mono = mono.doOnError(System.err::println);
return mono;
}
static <R> Function<? super String, ? extends Mono<? extends R>> flatMapper(Class<R> clazz) {
return (str) -> {
A a = new A(str);
return Mono.just((R) a);
};
}
@Data
@AllArgsConstructor
static class A {
private String name;
}
}
这是来自 Maven 和/或的错误javac
:
IncompatibleTypes.java:16: error: incompatible types: Mono<Object> cannot be converted to Mono<A>
.doOnError(System.err::println);
doOnError()
应该返回Mono<T>
,T
而不应该Object
在我的例子中。
Eclipse 中没有错误,当我将鼠标悬停doOnError
在 Eclipse 上时,它显示了预期的类型Mono<A>
(而不是Mono<Object>
):
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/254877/638f85b787a0e4e0b349/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!