Zastanawiam się dlaczego Java 5 i powyżej stanowią formatowania printf stylu przy użyciu statycznej metody w klasie String tak:Dlaczego format String (Object ... args) jest zdefiniowany jako metoda statyczna?
public static String format(String format, Object... args)
zamiast
public String format(Object... args)
tak, że możemy napisać "%02d".format(5)
do uzyskać 05
zamiast String.format("%02d", 5)
.
Wyobrażałem sobie, gdybym mógł modyfikować klasy String, mogę dodać to:
public String format(Object... args) {
return format(this, args)
}
aby uzyskać ten sam rezultat.
Znalazłem, że w C#, metoda statyczna jest również używana zamiast metody instancji.
Zastanawiam się, dlaczego zdecydowali się to zrobić, ale nie znalazłem wyjaśnienia. Metody instancji trim
i substring
zwracają nową instancję ciągu, więc powinny zrobić to samo z format
.
Ponadto klasa DateFormat
wykorzystuje to również:
public final String format(Date date)
formatowania dat. Więc jeśli weźmiemy pod uwagę instancję DateFormat jako formatera, instancja String może być również używana jako formater.
Wszelkie pomysły?
czy to naprawdę ma znaczenie? –
to naprawdę nie ma znaczenia, ale ja właśnie zastanawiam się, czy istnieje jakiekolwiek uzasadnienie tego. Ponieważ nie piszemy "String.substring (" abcde ", 3, 2)' ale '" abcde ".substring (3, 2)', format powinien również mieć podobną metodę wywołania, jak sądzę. – yuku
Podobnie, dlaczego jest to 'Collections.sort (List)', a nie 'List.sort()'. Nigdy nie lubiłem tak bardzo. – skaffman