Rumah > Java > javaTutorial > Bolehkah Pembolehubah Jenis Merujuk Kelas Penentuannya di Java?

Bolehkah Pembolehubah Jenis Merujuk Kelas Penentuannya di Java?

DDD
Lepaskan: 2024-12-24 15:27:15
asal
955 orang telah melayarinya

Can Type Variables Refer to Their Defining Class in Java?

Bolehkah Pembolehubah Taip Merujuk Jenis Semasa?

Andaikan anda ingin mencipta fungsi yang mengembalikan tika jenis semasa. Adakah terdapat cara untuk memastikan T merujuk secara khusus kepada subjenis (cth., T harus merujuk kepada B dalam kelas B)?

Melaksanakan Penyelesaian

Memperluaskan respons StriplingWarrior , corak berikut adalah penting untuk mencapai ini (resipi untuk pembangun fasih berhierarki API):

PENYELESAIAN

  1. Tentukan Kelas atau Antara Muka Abstrak Asas:

    Tubuhkan kontrak untuk mendapatkan jenis masa jalan bagi contoh yang melanjutkan kelas:

    abstract class SelfTyped<SELF extends SelfTyped<SELF>> {
       abstract SELF self();
    }
    Salin selepas log masuk
  2. Buat Kelas Abstrak Pertengahan:

    Kelas perantaraan mengekalkan parameter jenis rekursif SELF. Mereka hendaklah abstrak untuk mengelakkan penggunaan langsung:

    public abstract class MyBaseClass<SELF extends MyBaseClass<SELF>> extends SelfTyped<SELF> {...}
    Salin selepas log masuk
  3. Tentukan Kelas Daun:

    Kelas akhir menyelesaikan parameter jenis SELF dengan mereka jenis sendiri. Jadikan mereka muktamad untuk keselamatan:

    public final class MyLeafClass extends MyBaseClass<MyLeafClass> {...}
    Salin selepas log masuk

Contoh Penggunaan:

MyLeafClass mlc = new MyLeafClass().baseMethod().leafMethod();
AnotherLeafClass alc = new AnotherLeafClass().baseMethod().anotherLeafMethod();
Salin selepas log masuk

Awas dan Kesimpulan

Corak ini ialah pelaksanaan "templat berulang secara ingin tahu" dalam Java. Walaupun berkuasa, ia memerlukan penggunaan yang teliti dan paling baik dikhaskan untuk API dalaman sahaja. Corak itu sememangnya tidak selamat dan mesti digunakan dengan berhati-hati untuk mengelakkan penyalahgunaan. Walau bagaimanapun, apabila digunakan dengan berkesan, ia boleh meningkatkan ekspresif dan kebolehgunaan API pembina.

Atas ialah kandungan terperinci Bolehkah Pembolehubah Jenis Merujuk Kelas Penentuannya di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan