由于在上个流中有空值返回,所以在下个流用之前会先过滤空值。 然后用到.filter(Objects::nonNull)
SingleOutputStreamOperator<A> usageStateStream = Stream1
.filter(Objects::nonNull)
.map(...)
.uid("uid1")
然后在后面很多转换以后的某个流中再次用到.filter(Objects::nonNull) 时, 假设stream2中元素是<B>类型
SingleOutputStreamOperator<C> usageStateStream = Stream2
.filter(Objects::nonNull)
.map(...)
.uid("uid1")
毫无关系吧。
然后就一直报无法将B转换成A的错误
我就纳闷了。如果我有这么明显的类型转换错误的话,IDE早就检查出来语法错误了。
我什么时候把B转成A了呢?
后来我突然想到。可能是这个Objeccts在第一次出现的时候给赋值上类型A了。
所以才会报这个错。
然后删掉这行。换成别的判断方法解决了。
刚好B类型是个ArrayList。然后我就用ArrayList.isEmpty()判断了。
好坑啊。
或者就简单地
.filter(b -> b != null)
IDEA会提示你变成简写版的, .filter(Objects::nonNull)
不要变就好。