usiłuję zrozumieć wdrażania Integer .ToString(), która wygląda tak:Gdzie jest zdefiniowany konstruktor String (int, int, char [])?
public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(0, size, buf);
}
I wpadłem na ostatniej linii, która nie wygląda jak każdy z konstruktorów w klasie String oprócz tego:
String(char value[], int offset, int count)
... oprócz tego, że ta funkcja jest wywoływana z char [] argumentu pierwsze, w przeciwieństwie do, jak to jest stosowane w Integer.toString(). Miałem wrażenie, że zmiana kolejności argumentów jest liczona jako zmiana w podpisie metody i może być innym nadpisaniem metody.
Dlaczego to działa, czy interpretuję to nieprawidłowo?
Spójrz na realizację String. Prawdopodobnie ma jakieś prywatne pakiety, które nie pojawią się w publicznym javadoc. –
Ale (1+) do sprawdzania API i zadawania przemyślanego pytania. –
Gdzie widzisz rzekomy kod? To nie jest [w Javie 8] (http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/9d617cfd6717/src/share/classes/java/lang/Integer.java#l397). – Boann