Rumah > Java > javaTutorial > Bagaimanakah Parameter Jenis Generik Enum Java `` Berfungsi dan Apakah Hadnya?

Bagaimanakah Parameter Jenis Generik Enum Java `` Berfungsi dan Apakah Hadnya?

Linda Hamilton
Lepaskan: 2024-11-27 13:41:10
asal
145 orang telah melayarinya

How Does Java's Enum Generic Type Parameter `` Work and What Are Its Limitations?

Parameter Jenis Generik Java Enum

Sintaks kelas Enum>

Argumen Jenis Rujukan Kendiri

Argumen jenis E mewakili enum itu sendiri. Dengan memperoleh hujah jenis daripada enum, takrifan secara berkesan mengisytiharkan bahawa enum mesti merujuk kepada dirinya sendiri sebagai hujah jenisnya.

Sebagai contoh, pertimbangkan enum berikut:

public class StatusCode extends Enum<StatusCode> {
    // ...enum constants...
}</p>
<p>Dalam ini kes, E adalah bersamaan dengan StatusCode. Argumen jenis rujukan sendiri ini mempunyai faedah berikut:</p>
<ul>
<li>
<strong>API Rujukan Kendiri:</strong> Membenarkan kelas Enum merujuk kepada jenisnya sendiri dalam APInya, seperti mengisytiharkan bahawa Enum&lt ;E> melaksanakan Sebanding<E>.</li>
<li>
<strong>Keselamatan Jenis:</strong> Memastikan bahawa enum hanya boleh dibandingkan dengan enum lain daripada jenis yang sama, menghalang perbandingan tidak sah antara jenis enum yang berbeza.</li>
</ul> <p><strong>Aplikasi Di Luar Enum</strong></p>
<p>Walaupun jenis parameter jenis rujukan kendiri ini digunakan terutamanya dalam kelas Enum, ia juga boleh digunakan dalam konteks lain di mana ia perlu untuk menentukan jenis yang merujuk secara rekursif kepada dirinya sendiri.</p>
<p>Salah satu contoh ialah antara muka Message dan Builder yang digunakan dalam ProtocolBuffers. Antara muka ini direka bentuk untuk digunakan secara berpasangan, di mana mesej tidak boleh diubah dan pembina boleh diubah. Antara muka berikut menggambarkan penggunaan hujah jenis rujukan sendiri:</p>
<pre class="brush:php;toolbar:false">public interface IBuilder<TMessage, TBuilder>
  where TMessage : IMessage<TMessage, TBuilder>
  where TBuilder : IBuilder<TMessage, TBuilder>

public interface IMessage<TMessage, TBuilder>
  where TMessage : IMessage<TMessage, TBuilder>
  where TBuilder : IBuilder<TMessage, TBuilder>
Salin selepas log masuk

Antara muka ini memastikan mesej hanya boleh dibina oleh pembina yang sepadan dan pembina hanya boleh membina mesej yang sepadan.

Batasan

Walaupun parameter jenis rujukan sendiri jenis ini menyediakan faedah, ia tidak sepenuhnya menghalang penciptaan jenis yang tidak sah. Sebagai contoh, jenis berikut akan menyusun tetapi menghasilkan perbandingan yang tidak sah:

public class First extends Enum<First> {}
public class Second extends Enum<First> {}
Salin selepas log masuk

Dalam kes ini, Second akan melaksanakan Comparable bukannya Sebanding, membenarkan perbandingan yang tidak sah.

Atas ialah kandungan terperinci Bagaimanakah Parameter Jenis Generik Enum Java `` Berfungsi dan Apakah Hadnya?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan