자바 11
인터페이스 의 새로운 기본 toArray메소드를 Collection사용하면 콜렉션의 요소를 원하는 런타임 유형의 새로 작성된 배열로 전송할 수 있습니다. 그것은 소요 IntFunction<T[]> generator인자로와로 사용할 수 있습니다 :
String[] array = set.toArray(String[]::new);
이미 비슷한 방법 Collection.toArray(T[])이 있으며이 추가는 더 이상 null인수 로 전달할 수 없다는 것을 의미 합니다.이 경우 해당 방법에 대한 참조가 모호하기 때문입니다. 그러나 두 방법 모두 NPE를 던지기 때문에 여전히 괜찮습니다.
자바 8
Java 8에서는 스트림 API를 사용할 수 있습니다.
String[] array = set.stream().toArray(String[]::new);
우리는 또한의 오버로드 된 버전을 사용 할 수 있습니다 toArray () 소요 IntFunction<A[]> generator로를 :
String[] array = set.stream().toArray(n -> new String[n]);
여기서 생성기 함수의 목적은 정수 (원하는 배열의 크기)를 취하여 원하는 크기의 배열을 생성하는 것입니다. 나는 개인적으로 람다 식을 사용하는 후자보다 메소드 참조를 사용하는 전자의 접근법을 선호합니다.
toArray()명확하게 자바 독에서 언급 한 방법.