Rumah >Java >javaTutorial >Bagaimana untuk Memulakan Peta Statik dalam Java: Blok Statik lwn Subkelas Tanpa Nama?

Bagaimana untuk Memulakan Peta Statik dalam Java: Blok Statik lwn Subkelas Tanpa Nama?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 20:21:16637semak imbas

How to Initialize Static Maps in Java: Static Block vs. Anonymous Subclass?

Memulakan Peta Statik dalam Java

Di Java, peta statik boleh dimulakan menggunakan dua kaedah utama:

1. Pemula Statik

Kaedah ini melibatkan penggunaan blok statik dalam perisytiharan kelas untuk memulakan peta. Contoh ini ditunjukkan dalam sampel kod yang disediakan:

private static final Map<Integer, String> myMap = new HashMap<>();
static {
    myMap.put(1, "one");
    myMap.put(2, "two");
}

Kelebihan:

  • Mudah dan mudah
  • Jaminan permulaan apabila kelas memuatkan

Kelemahan:

  • Mungkin tidak sesuai untuk logik permulaan yang kompleks

2. Instance Initialiser (Subkelas Tanpa Nama)

Kaedah ini menggunakan subkelas tanpa nama untuk memulakan peta. Ia ditulis sebagai pemula kejadian tetapi mempunyai tujuan yang sama seperti pemulaan statik:

private static final Map<Integer, String> myMap2 = new HashMap<>(){
    {
        put(1, "one");
        put(2, "two");
    }
};

Kelebihan:

  • Membolehkan logik pemulaan yang lebih kompleks
  • Mencipta yang tidak berubah peta

Kelemahan:

  • Memerlukan mencipta subkelas tanpa nama
  • Mungkin tidak disokong dalam semua senario (cth., apabila kelas adalah akhir)

Alternatif:

  • Peta Statik Tidak Berubah: Dengan memulakan peta menggunakan blok statik dan kemudian memanggil Koleksi .unmodifiableMap(map), anda boleh mencipta peta statik yang tidak boleh diubah.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Peta Statik dalam Java: Blok Statik lwn Subkelas Tanpa Nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn