2016-10-25 1 views

답변

7

Stream.of은 인수로 객체 만 받아들입니다. byte은 개체가 아니지만 byte 배열입니다. abyte의 배열 인 경우 Stream.of(a)은 "배열 인이 하나의 객체의 스트림"을 의미 할 수 있습니다.

배열이 Byte[] 인 경우 배열의 각 요소가 개체이므로 컴파일러에서 의미를 추측 할 수 있습니다.

당신이 바이트 배열 스트리밍 할 수있는 방법에 대한 여기에 정보가있다 : In Java 8, is there a ByteStream class?

+1

Intream.of (byte [])는 컴파일 오류 –

+0

@yijiang이 발생하므로 발생합니다. – khelwood

+0

하지만 설명해 주시면 3Q에 도움이됩니다. –

3

프리미티브 배열의 경우 기본 스트림을 사용해야하지만 불행히도 ByteStream은 없습니다. 당신이 당신의 byte[]int[]로 변경하는 경우, 당신은 쓸 수 :

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

그렇지 않으면 당신이 누구의 단일 요소 입력 배열 인 Stream<byte[]>를 얻을 모두 static<T> Stream<T> of(T t)static<T> Stream<T> of(T... values)Stream 요소로 참조 형식을 기대하기 때문에, 당신은 통과 그렇게 할 때 프리미티브 (primitive) 배열의 경우, 사용 가능한 유일한 참조 유형은 배열 자체입니다.

System.out.println(Stream.of(b).count()); 케이스의 경우 b은 참조 유형의 배열이므로 static<T> Stream<T> of(T... values)은 3 개의 요소로 구성된 Stream<Byte>을 생성하는 데 사용됩니다.

+0

IntStream.of (바이트 []) 컴파일 오류를 가져올 것이다가. –

+1

@yijiang 나는 그것을 놓쳤다. 나는'byte []'가 자동으로'int []'로 변환 될 수 없다고 생각하지 않았습니다. 나는 대답을 편집 할 것이다. 귀하의 설명을 위해 – Eran

+0

3Q. –