Jawaban sederhana untuk pertanyaan yang diajukan adalah bahwa string charset yang tersedia bervariasi dari platform ke platform.
Namun, ada enam yang diperlukan untuk hadir, sehingga konstanta bisa dibuat untuk yang sudah lama. Saya tidak tahu mengapa tidak.
JDK 1.4 melakukan hal yang hebat dengan memperkenalkan tipe Charset. Pada titik ini, mereka tidak akan ingin memberikan konstanta String lagi, karena tujuannya adalah untuk membuat semua orang menggunakan instance Charset. Jadi mengapa tidak memberikan enam konstanta standar Charset? Saya bertanya kepada Martin Buchholz karena dia kebetulan duduk tepat di sebelah saya, dan dia mengatakan tidak ada alasan yang sangat bagus, kecuali bahwa pada saat itu, masih setengah matang - terlalu sedikit API JDK telah dipasang untuk menerima Charset, dan dari yang ada, kelebihan Charset biasanya berkinerja lebih buruk.
Sangat menyedihkan bahwa hanya di JDK 1.6 yang akhirnya mereka selesaikan dengan overload Charset. Dan bahwa situasi kinerja terbelakang ini masih ada (alasan mengapa sangat aneh dan saya tidak dapat menjelaskannya, tetapi terkait dengan keamanan!).
Singkat cerita - tetapkan saja konstanta Anda sendiri, atau gunakan kelas Guava's Charsets yang dihubungkan dengan Tony the Pony (meskipun perpustakaan itu belum benar-benar dirilis).
Memperbarui: a StandardCharsets
kelas di JDK 7.
MessageDigest#getInstance()
.