Rumah Java javaTutorial Peraturan keserasian untuk generik fungsi Java

Peraturan keserasian untuk generik fungsi Java

Apr 26, 2024 pm 06:03 PM
Generik keserasian

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, > serasi dengan >

Java 函数泛型的兼容性规则

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) {}
Salin selepas log masuk

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) {}
Salin selepas log masuk

Peraturan 3: Parameter jenis kontravarian dan kovarian

  • Contravariance: Jika jenis subkelas T boleh menggantikan jenis superclass S, maka jenis <T> adalah serasi dengan <S>. Contohnya, <List<Cat>> serasi dengan <List<Animal>>.
  • <T> 类型兼容于 <S>。例如<List<Cat>> 兼容于 <List<Animal>>
  • 协变:如果超类类型 T 可以替代子类类型 S,则 <S> 类型兼容于 <T>。例如<String> 兼容于 <Object>

实战案例

考虑以下代码:

public <T extends Animal> void func1(T t) {
    // 代码...
}

public void func2(Cat c) {
    // 代码...
}
Salin selepas log masuk

func1 期望一个 Animal 或其子类的实例。func2 期望一个 Cat 实例。由于 Cat 扩展 Animal,因此 func1 可以兼容于 func2,从而可以接收 CatKovarian: 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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah fungsi generik menyelesaikan masalah jenis parameter variadik di Golang? Adakah fungsi generik menyelesaikan masalah jenis parameter variadik di Golang? Apr 16, 2024 pm 06:12 PM

Fungsi generik dalam Go menyelesaikan masalah jenis variadik: fungsi generik membenarkan parameter jenis ditentukan semasa masa jalan. Ini memungkinkan untuk menulis fungsi yang boleh mengendalikan hujah pelbagai jenis. Sebagai contoh, fungsi Max ialah fungsi generik yang menerima dua parameter setanding dan mengembalikan nilai yang lebih besar. Dengan menggunakan fungsi generik, kita boleh menulis kod yang lebih fleksibel dan umum yang boleh mengendalikan pelbagai jenis parameter.

Senario aplikasi khusus generik dalam golang Senario aplikasi khusus generik dalam golang May 04, 2024 am 11:45 AM

Senario aplikasi generik dalam Go: Operasi pengumpulan: Buat operasi pengumpulan yang sesuai untuk sebarang jenis, seperti penapisan. Struktur Data: Tulis struktur data tujuan umum seperti baris gilir, tindanan dan peta untuk menyimpan dan memanipulasi pelbagai jenis data. Algoritma: Tulis algoritma tujuan umum seperti pengisihan, carian dan pengurangan yang boleh mengendalikan pelbagai jenis data.

Apakah sempadan atas dan bawah generik fungsi Java? bagaimana nak guna? Apakah sempadan atas dan bawah generik fungsi Java? bagaimana nak guna? Apr 26, 2024 am 11:45 AM

Generik fungsi Java membenarkan menetapkan sempadan atas dan bawah. Extends menentukan bahawa jenis data yang diterima atau dikembalikan oleh fungsi mestilah subjenis daripada jenis yang ditentukan, mis. Sempadan bawah (super) menentukan bahawa jenis data yang diterima atau dikembalikan oleh fungsi mestilah superjenis jenis yang ditentukan, mis. Penggunaan generik meningkatkan kebolehgunaan semula kod dan keselamatan.

Apakah kesan generik Golang pada tandatangan dan parameter fungsi? Apakah kesan generik Golang pada tandatangan dan parameter fungsi? Apr 17, 2024 am 08:39 AM

Kesan generik pada tandatangan dan parameter fungsi Go termasuk: Parameter jenis: Tandatangan fungsi boleh mengandungi parameter jenis, menyatakan jenis yang boleh digunakan oleh fungsi. Kekangan jenis: Parameter jenis boleh mempunyai kekangan yang menentukan syarat yang mesti dipenuhi. Inferens jenis parameter: Pengkompil boleh membuat kesimpulan jenis parameter jenis yang tidak ditentukan. Menentukan jenis: Jenis parameter boleh dinyatakan secara eksplisit untuk memanggil fungsi generik. Ini meningkatkan kebolehgunaan semula dan fleksibiliti kod, membolehkan anda menulis fungsi dan jenis yang boleh digunakan dengan berbilang jenis.

Aplikasi generik Java dalam pembangunan Android Aplikasi generik Java dalam pembangunan Android Apr 12, 2024 pm 01:54 PM

Aplikasi generik dalam pembangunan Android meningkatkan kebolehgunaan semula kod, keselamatan dan fleksibiliti. Sintaks terdiri daripada mengisytiharkan pembolehubah jenis T yang boleh digunakan untuk memanipulasi data berparameter jenis. Generik dalam tindakan termasuk penyesuai data tersuai, membenarkan penyesuai menyesuaikan diri dengan sebarang jenis objek data tersuai. Android juga menyediakan kelas senarai generik (seperti ArrayList) dan kaedah generik yang membenarkan manipulasi parameter pelbagai jenis. Faedah menggunakan generik termasuk kebolehgunaan semula kod, keselamatan dan fleksibiliti, tetapi penjagaan perlu diambil untuk menentukan sempadan yang betul dan menggunakannya secara sederhana untuk memastikan kebolehbacaan kod.

Amalan terbaik untuk menyelesaikan isu keserasian fungsi PHP Amalan terbaik untuk menyelesaikan isu keserasian fungsi PHP May 01, 2024 pm 02:42 PM

Amalan terbaik untuk menyelesaikan isu keserasian fungsi PHP: Gunakan nama fungsi versi (contohnya: array_map_recursive()) Leverage alias fungsi (contohnya: functionarray_map($callback,$array){...}) untuk menyemak ketersediaan fungsi (contohnya: jika (function_exists('array_map_recursive')){...}) gunakan ruang nama (contohnya: namespaceMyNamespace{...})

Apakah batasan fungsi generik di Golang? Apakah batasan fungsi generik di Golang? Apr 16, 2024 pm 05:12 PM

Had fungsi generik Go: hanya parameter jenis disokong, parameter nilai tidak disokong. Pengulangan fungsi tidak disokong. Parameter jenis tidak boleh ditentukan secara eksplisit, ia disimpulkan oleh pengkompil.

Bagaimanakah jenis enum Java berfungsi dengan generik? Bagaimanakah jenis enum Java berfungsi dengan generik? May 04, 2024 am 08:36 AM

Gabungan jenis penghitungan dan generik dalam Java: Apabila mengisytiharkan penghitungan dengan generik, anda perlu menambah kurungan sudut, dan T ialah parameter jenis. Apabila membuat kelas generik, anda juga perlu menambah kurungan sudut, T ialah parameter jenis yang boleh menyimpan sebarang jenis. Gabungan ini meningkatkan fleksibiliti kod, keselamatan jenis dan memudahkan kod.

See all articles