Prosta odpowiedź na zadane pytanie jest taka, że dostępne ciągi znaków zestawu znaków różnią się w zależności od platformy.
Jednak istnieje sześć, które muszą być obecne, więc dla tych dawnych można było stworzyć stałe. Nie wiem, czemu nie byli.
JDK 1.4 zrobił świetną rzecz, wprowadzając typ Charset. W tym momencie nie chcieliby już podawać stałych String, ponieważ celem jest, aby wszyscy używali instancji Charset. Dlaczego więc nie podać sześciu standardowych stałych Charseta? Zapytałem Martina Buchholza, ponieważ akurat siedział obok mnie, i powiedział, że nie ma naprawdę szczególnie dobrego powodu, z wyjątkiem tego, że w tamtym czasie wszystko było nadal w połowie upieczone - zbyt mało API JDK zostało zmodernizowanych do zaakceptuj Charset, a spośród nich przeciążenia Charset zwykle działały nieco gorzej.
To smutne, że dopiero w JDK 1.6 w końcu skończyli wyposażać wszystko w przeciążenia Charset. I że ta sytuacja dotycząca wydajności wstecznej nadal istnieje (powód, dla którego jest niesamowicie dziwny i nie mogę tego wyjaśnić, ale jest związany z bezpieczeństwem!).
Krótko mówiąc - po prostu zdefiniuj własne stałe lub skorzystaj z klasy Charsets Guava, z którą łączył się Tony Pony (choć ta biblioteka nie jest jeszcze tak naprawdę wydana).
Aktualizacja:StandardCharsets
klasa jest w JDK 7.
MessageDigest#getInstance()
mówiąc, ta sama historia trwa .