Rumah  >  Artikel  >  Java  >  Dalam senario apakah kelas dalaman tanpa nama Java tidak sesuai untuk digunakan?

Dalam senario apakah kelas dalaman tanpa nama Java tidak sesuai untuk digunakan?

WBOY
WBOYasal
2024-05-03 17:42:021188semak imbas

Situasi di mana kelas dalaman tanpa nama tidak sesuai untuk digunakan termasuk: perlu mengakses ahli persendirian, memerlukan berbilang contoh, perlu mewarisi, perlu mengakses jenis generik

Java 匿名内部类在哪些场景下不适合使用?

Senario di mana kelas dalaman tanpa nama Java tidak sesuai untuk digunakan

Kelas dalaman tanpa nama ialah Cara mudah untuk mencipta kelas dalaman yang boleh digunakan untuk mencipta kelas dengan cepat yang melaksanakan antara muka atau melanjutkan kelas apabila diperlukan. Walau bagaimanapun, terdapat beberapa situasi yang tidak sesuai untuk menggunakan kelas dalaman tanpa nama:

1 Perlu mengakses ahli persendirian kelas luar

kelas dalaman tanpa nama tidak boleh mengakses ahli persendirian kelas luar, yang mungkin mengehadkan. penggunaannya dalam beberapa situasi berguna. Contohnya, jika anda perlu mengakses medan peribadi atau kaedah kelas luar daripada kelas dalaman tanpa nama, anda mesti mempromosikan hak akses ahli ini kepada dilindungi atau awam, yang mungkin melanggar prinsip pengkapsulan.

2. Berbilang tika diperlukan

Kelas dalaman tanpa nama biasanya adalah tunggal, yang bermaksud bahawa hanya satu tika kelas boleh dibuat. Ini akan menjadi had jika berbilang contoh kelas dalaman tanpa nama perlu dibuat.

3. Warisan diperlukan

Kelas dalaman tanpa nama tidak boleh mewarisi daripada kelas lain, yang mungkin mengehadkan fleksibiliti mereka dalam situasi tertentu. Contohnya, jika anda perlu mencipta kelas dalaman tanpa nama yang mewarisi daripada kelas lain, ini tidak akan dapat dilakukan.

4. Perlu mengakses jenis generik

Kelas dalaman tanpa nama tidak boleh mengakses parameter jenis generik kelas luar. Jika anda perlu mengakses parameter jenis generik kelas luar daripada kelas dalaman tanpa nama, anda mesti menyatakan secara eksplisit parameter ini sebagai parameter jenis.

Kes Praktikal:

Pertimbangkan contoh berikut:

// 外部类
public class OuterClass {

    private int privateField;

    public void doSomething() {
        // 创建匿名内部类
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // 无法访问 privateField
                System.out.println(privateField);
            }
        };
    }
}

Dalam kes ini, kelas dalaman tanpa nama tidak boleh mengakses medan peribadi kelas luar privateField, jadi kelas dalaman tanpa nama tidak sesuai digunakan.

Alternatif yang Dicadangkan:

Dalam kes di atas, anda boleh menggunakan kelas dalaman yang dinamakan atau kelas dalaman statik sebagai alternatif kepada kelas dalaman tanpa nama. Ini akan membenarkan akses kepada ahli persendirian kelas luar dan keupayaan untuk mencipta berbilang kejadian.

rreeee

Atas ialah kandungan terperinci Dalam senario apakah kelas dalaman tanpa nama Java tidak sesuai untuk digunakan?. 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