że mamy zmienną typu IntFunction
która zwraca tablicę liczb całkowitych:Jak działają odniesienia konstruktora tablic Java 8?
IntFunction<int[]> i;
z Java 8 generycznych, możliwe jest, aby zainicjować tę zmienną z odniesieniem konstruktora, jak ta:
i = int[]::new
Jak czy kompilator Java tłumaczy to na kod bajtowy?
Wiem, że dla innych typów, jak String::new
, można użyć invokedynamic
instrukcję wskazującą do konstruktora String java/lang/String.<init>(...)
, który jest po prostu metoda o specjalnym znaczeniu.
Jak to działa z tablicami, widząc, że istnieją specjalne instrukcje dotyczące tworzenia tablic?
W Javie te nazywane są referencje, a nie wskaźniki. Ogólnie referencje zapewniają prawie wszystkie operacje wskaźnika, z tym że nie można dodać arbitralnego przesunięcia do odwołania lub wykonywać na nim innych operacji matematycznych. –