Peraturan keserasian generik fungsi Java memastikan keselamatan jenis. Peraturan termasuk: senarai parameter jenis yang sama, sempadan parameter jenis yang sama, dan parameter jenis kontravarian dan kovarian. Contohnya,
Peraturan Keserasian untuk Generik Fungsi Java
Fungsi generik Java membenarkan kami menulis kod dalam cara yang selamat jenis, tetapi tidak mengikut peraturan keserasian yang betul boleh mengakibatkan ralat masa kompilasi. Mari kita susun peraturan untuk mengelakkan masalah sedemikian.
Peraturan 1: Senarai parameter jenis adalah sama
Hanya jenis fungsi dengan senarai parameter yang sama yang serasi. Jadi contoh berikut akan mengakibatkan ralat:
public <T> void func1(T v) {} public <U> void func2(U v) {}
Peraturan 2: Parameter jenis mempunyai had yang sama
Bounds mentakrifkan nilai yang dibenarkan untuk jenis generik. Fungsi tidak serasi jika ia mempunyai sempadan yang berbeza untuk parameter jenis yang sama. Contohnya:
public <T extends Comparable<T>> void func1(T v) {} public <T extends Number> void func2(T v) {}
Peraturan 3: Parameter jenis kontravarian dan kovarian
<T>
adalah serasi dengan <S>
. Contohnya, <List<Cat>>
serasi dengan <List<Animal>>
. <T>
类型兼容于 <S>
。例如<List<Cat>>
兼容于 <List<Animal>>
。<S>
类型兼容于 <T>
。例如<String>
兼容于 <Object>
。实战案例
考虑以下代码:
public <T extends Animal> void func1(T t) { // 代码... } public void func2(Cat c) { // 代码... }
func1
期望一个 Animal
或其子类的实例。func2
期望一个 Cat
实例。由于 Cat
扩展 Animal
,因此 func1
可以兼容于 func2
,从而可以接收 Cat
Kovarian: Jika jenis superclass T boleh menggantikan jenis subkelas S, maka jenis <S>
adalah serasi dengan <T>
. Contohnya, <String>
serasi dengan <Object>
.
Contoh Praktikal
Pertimbangkan kod berikut:rrreee
func1
menjangkakan contoh Animal
atau subkelasnya. func2
menjangkakan contoh Cat
. Memandangkan Kucing
memanjangkan Haiwan
, func1
serasi dengan func2
dan boleh menerima Cat
Type parameter. 🎜🎜🎜Kesimpulan🎜🎜🎜Adalah penting untuk mematuhi peraturan keserasian untuk generik fungsi untuk mengelakkan ralat masa penyusunan dan memastikan keselamatan jenis. 🎜Atas ialah kandungan terperinci Peraturan keserasian untuk generik fungsi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!