将相同的方法引用传递给apache flink中的过滤器会引发classcastException

dtcbnfnu  于 2023-11-15  发布在  Apache
关注(0)|答案(1)|浏览(101)

下面的代码抛出一个ClasscastException(java.lang.ClassCastException:类java.lang.String不能强制转换为类java.lang.String)

final DataStreamSource<String> st1 = environment.fromCollection(List.of("asdf", "asfd"));
        final DataStreamSource<Integer> st2 = environment.fromCollection(List.of(1, 2, 3));
        st1.filter(Objects::nonNull);
        st2.filter(Objects::nonNull);

字符串
但是当我们这样做的时候

final DataStreamSource<String> st1 = environment.fromCollection(List.of("asdf", "asfd"));
        final DataStreamSource<Integer> st2 = environment.fromCollection(List.of(1, 2, 3));
        st1.filter(s -> Objects.nonNull(s));
        st2.filter(i -> Objects.nonNull(i));


一切正常。
Bug还是特性?
Flink:1.17.0,java 11

twh00eeo

twh00eeo1#

我也有类似的问题。如果你这样写,它会给你一个错误。

.filter(Objects::nonNull)

字符串
然后切换到

.filter(jsonObject -> jsonObject ! = null).


一切都很好

相关问题