Parameter Jenis Generik Java Enum
Sintaks
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< ;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>
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> {}
Dalam kes ini, Second akan melaksanakan Comparable
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!