【发布时间】:2016-07-22 14:14:40
【问题描述】:
我在 SO 上绝对不能找到适合我的问题的答案。 情况:在工作中,我检查了一个现有的 Java8 项目。我使用 Eclipse Neon (4.6.0)
一个类有这个字段:
private final byte[] stream;
类构造函数有这个参数:
byte[] stream
它会这样做:
this.stream = Optional.ofNullable(stream)
.map(byte[]::clone)
.orElse(ArrayUtils.EMPTY_BYTE_ARRAY);
不幸的是,表达式存在错误:Type mismatch: cannot convert from Object to byte[],尤其是 .map(byte[]::clone) 部分返回 Optional<Object>(根据 Eclipse)而不是 Optional<byte[]>。
因为我是唯一一个使用 Eclipse 的人 - 其他人使用 IntelliJ 并且他们没有错误 - 我只能自己处理这个问题。
我可以/应该做什么(除了在表达式中的某处转换为 byte[] 作为 Eclipse 建议的快速修复)?
注意:我记得几年前曾在 Java 1.5 泛型中看到过类似的奇怪编译错误,但情况恰恰相反:我使用 Eclipse 没问题,但另一个人我与使用过的 Netbeans 一起工作,他遇到了编译错误(经过一番搜索,他发现这是 JDK 中的一个错误)。
【问题讨论】:
标签: java eclipse java-8 bytearray optional