Beim Herumspielen mit der Java8 Streams-API bin ich auf Folgendes gestoßen:
Um ein Array von primitiven Wrapper-Klasse-Objekten in einen Stream
umzuwandeln, muss ich einfach Stream.of(array)
aufrufen. Aber um ein Array von primitiven Datentypen umzuwandeln, muss ich .of(array)
von der entsprechenden Wrapper (Klasse) Stream-Klasse aufrufen (<-- das klingt albern).
Ein Beispiel:
final Integer[] integers = {1, 2, 3};
final int[] ints = {1, 2, 3};
Stream.of(integers).forEach(System.out::println); //Das funktioniert einwandfrei
Stream.of(ints).forEach(System.out::println); //Das funktioniert nicht
IntStream.of(ints).forEach(System.out::println); //Muss IntStream anstelle von Stream verwenden
Meine Frage(n): Warum ist das so? Korreliert dies z.B. mit dem Verhalten von Arrays.asList()
, das auch nur für Wrapper-Klassen-Arrays funktioniert?