Moin
Ich verstehe nicht ganz was hier passiert:
Zeile 9: Ist keine Überraschung, ich übergebe ein Integer Array und es werden die Integers ausgegeben
Zeile 11: Hier verstehe ich nicht wieso der Hashcode des int[] ausgegeben wird. Stream.of() ist mit varargs überladen. Wenn ich aber ein primitives Array habe, wird wohl die Methode aufgerufen die ein Object als Parameter hat. Ich verstehe nicht wieso das so ist, wird ja irgendeinen Sinn haben. Mir leuchtet er nicht ein, ich ging davon aus, dass bei einem Array immer die varargs Methode aufgerufen wird.
Ich verstehe nicht ganz was hier passiert:
Java:
import java.util.*;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
Integer[] arr = {3, 5, 7, 7, 4};
Stream.of(arr).forEach(System.out::println);// gibt die Zahlen aus
int[] intArr = {4, 5, 6, 8, 4};
Stream.of(intArr).forEach(System.out::println);// gibt den Hashcode des Arrays aus
Arrays.stream(intArr).forEach(System.out::println);// gibt die Zahlen aus
}
}
Zeile 9: Ist keine Überraschung, ich übergebe ein Integer Array und es werden die Integers ausgegeben
Zeile 11: Hier verstehe ich nicht wieso der Hashcode des int[] ausgegeben wird. Stream.of() ist mit varargs überladen. Wenn ich aber ein primitives Array habe, wird wohl die Methode aufgerufen die ein Object als Parameter hat. Ich verstehe nicht wieso das so ist, wird ja irgendeinen Sinn haben. Mir leuchtet er nicht ein, ich ging davon aus, dass bei einem Array immer die varargs Methode aufgerufen wird.
Java:
public class Test {
public static void main(String[] args) {
Integer[] arr = {3, 5, 7, 7, 4};
int[] intArr = {4, 5, 6, 8, 4};
test(arr);//output: varargs
test(intArr);//output: Object
}
static void test(Object o) {
System.out.println("Object");
}
static void test(Object...o) {
System.out.println("varargs");
}
}