当我使用Java 8 Stream.of原始类型时,结果很混乱

yi *_*ang 4 java java-8 java-stream

    byte[] a = {1,2,3};
    System.out.println(Stream.of(a).count());

    Byte[] b = {1,2,3};
    System.out.println(Stream.of(b).count());
Run Code Online (Sandbox Code Playgroud)

结果是1和3,为什么?

khe*_*ood 7

Stream.of只接受对象作为其参数.A byte不是Object,而是byte数组.如果a是一个数组byte,那么Stream.of(a)只能表示"这一个对象的流,这是一个数组".

如果你有一个Byte[]数组,那么数组的每个元素都是一个对象,所以编译器可以猜到你的意思.

这里有关于如何流式传输字节数组的信息: 在Java 8中,是否有ByteStream类?