Jakiś konkretny powód dlaczego `String.format()` jest `static`?

0

Nie mam żadnego problemu, tylko raczej pytam z ciekawości. Jakoś inne metody, replace(), split() etc. mogą być instance metodami, czemu format() nie?

I raczej nie jestem zainteresowany opiniami - widziałem już 30 pytań z setkami odpowiedzi w których właśnie były same opinie, i żadnego sensownego powodu.

Jak już wspomniałem, pytam z ciekawości.

1

Póki co jest to bug - https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7056478. Jak odrzucą to może napiszą czemu. :)

0

Czyli nie ma dobrego powodu

0
lion137 napisał(a):

https://stackoverflow.com/questions/792259/why-is-strings-formatobject-args-defined-as-a-static-method

Rozumiem że wklejając ten link tutaj wypowiadasz się przytaczając pytanie/odpowiedzi ludzi tam wypowiadających się?

0
lion137 napisał(a):

To chyba oczywiste.

Więc konkretnie pod którą z tych odpowiedzi się podpisujesz? Bo nie mogę tego wychwycić :)

3

Myślę, że nie ma żadnego uzasadnienia. Tak po prosto wyszło. Ktoś, kto to robił, miał akurat jakiś statyczny dzień. IMO nie jest to ani specjalnie źle, ani dobrze.
Nie wszytko co ludzie robią jest jakoś mocno przemyślane i to nie znaczy, że jest złe.

Dla kontrastu: całe java.util.Date i Calendar jest bardzo mocno przemyślane. Tylko, że fatalnie.

0
TomRiddle napisał(a):

Nie mam żadnego problemu, tylko raczej pytam z ciekawości. Jakoś inne metody, replace(), split() etc. mogą być instance metodami, czemu format() nie?

Strzelam, że to dlatego, że printf nie jest instancyjny.
I myślę, że by to bardzo dziwnie wyglądało. Ale pewnie kwestia przyzwyczajenia.

0
somekind napisał(a):
TomRiddle napisał(a):

I myślę, że by to bardzo dziwnie wyglądało. Ale pewnie kwestia przyzwyczajenia.

Ja bym w sumie wolał "You %s are %s".format("twat", "heck")

0

W Javie printf jest metodą na obiekcie typu PrintStream.

Najbardziej przekonujący (nie mylić z sensownym) jest chyba argument o przeciążaniu (przeciążanie = rak). Ktoś bardzo chciał przeciążyć format tak by jedna z wersji tej metody brała dodatkowe Locale, a druga nie, więc zrobienie statycznej metody format rozwiązało sprawę. W .NETu jest podobnie tylko zamiast Locale jest IFormatProvider.

1 użytkowników online, w tym zalogowanych: 0, gości: 1