Rumah  >  Artikel  >  Java  >  Mengapakah \"lanjutkan T\" Dibenarkan Tetapi Tidak \"melaksanakan T\" dalam Batasan Parameter Jenis?

Mengapakah \"lanjutkan T\" Dibenarkan Tetapi Tidak \"melaksanakan T\" dalam Batasan Parameter Jenis?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 11:52:02894semak imbas

Why is

Mengapa "melanjutkan T" Dibenarkan Tetapi Tidak "melaksanakan T" dalam Batasan Parameter Jenis?

Di Java, apabila mentakrifkan sempadan untuk jenis parameter, anda boleh menggunakan "melanjutkan T" tetapi bukan "melaksanakan T". Ini mungkin kelihatan seperti perbezaan yang sewenang-wenangnya, tetapi ia mempunyai sebab khusus yang berakar umbi dalam pelaksanaan generik Java.

Sebab perbezaan ini terletak pada semantik pewarisan dan pelaksanaan. Di Java, kelas hanya boleh melaksanakan satu antara muka, tetapi ia boleh melanjutkan berbilang kelas. Oleh itu, menggunakan "lanjutkan" dalam sempadan parameter jenis membolehkan lebih fleksibiliti dalam menentukan jenis yang dibenarkan.

Contoh:

Pertimbangkan kod berikut:

<code class="java">public interface C {}
public class A<B extends C> {}</code>

Jika kami membenarkan "melaksanakan" dalam sempadan parameter jenis, kod ini akan sah. Walau bagaimanapun, ia akan menimbulkan persoalan tentang antara muka kelas B yang harus dilaksanakan. Memandangkan berbilang antara muka tidak disokong dalam konteks ini, ia akan membawa kepada kekaburan.

Sebaliknya, menggunakan "lanjutkan" dalam sempadan memastikan bahawa kelas B mestilah subjenis antara muka C. Ini ialah kekangan yang lebih umum yang tidak menimbulkan sebarang kekaburan.

Oleh itu, dengan mengehadkan penggunaan "lanjutan" dalam sempadan parameter jenis untuk antara muka, Java memastikan ketekalan dan kejelasan pelaksanaan generiknya.

Atas ialah kandungan terperinci Mengapakah \"lanjutkan T\" Dibenarkan Tetapi Tidak \"melaksanakan T\" dalam Batasan Parameter Jenis?. 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