Rumah Java javaTutorial java 泛型中 T 和 问号(通配符)的区别

java 泛型中 T 和 问号(通配符)的区别

Dec 19, 2016 pm 03:43 PM
Generik

类型本来有:简单类型和复杂类型,引入泛型后把复杂类型分的更细了;

现在List, List是两种不同的类型;且无继承关系;

泛型的好处如:

开始版本

 public void write(Integer i, Integer[] ia);  public void write(Double  d, Double[] da);
Salin selepas log masuk

泛型版本

 public <T> void write(T t, T[] ta);
Salin selepas log masuk

简便了代码

定义泛型

1.定义在类后面

紧跟类名后面

 public class TestClassDefine<T, S extends T>{}
Salin selepas log masuk

定义泛型 T, S, 且S 继承 T

2.定义在方法装饰符后面

紧跟修饰符后面(public)

 public <T, S extends T> T testGenericMethodDefine(T t, S s){}
Salin selepas log masuk

定义泛型 T, S, 且S 继承 T

实例化泛型

1.实例化定义在类上的泛型

第一声明类变量或者实例化时。例如

    List<String> list;     list = new ArrayList<String>;
Salin selepas log masuk

第二继承类或者实现接口时。例如

public class MyList<E> extends ArrayList<E> implements List<E> {...}
Salin selepas log masuk

2.实例化定义方法上的泛型

当调用范型方法时,编译器自动对类型参数(泛型)进行赋值,当不能成功赋值时报编译错误

通配符(?)

上面有泛型的定义和赋值;当在赋值的时候,上面一节说赋值的都是为具体类型,当赋值的类型不确定的时候,我们用通配符(?)代替了:

List<?> unknownList;  List<? extends Number> unknownNumberList;  
List<? super Integer> unknownBaseLineIntgerList;
Salin selepas log masuk

在Java集合框架中,对于参数值是未知类型的容器类,只能读取其中元素,不能向其中添加元素, 因为,其类型是未知,所以编译器无法识别添加元素的类型和容器的类型是否兼容,唯一的例外是NULL


更多java 泛型中 T 和 问号(通配符)的区别相关文章请关注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.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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.

Terokai kelebihan dan kegunaan generik di Golang Terokai kelebihan dan kegunaan generik di Golang Apr 03, 2024 pm 02:03 PM

Jawapan: Golang generik ialah alat yang berkuasa untuk meningkatkan kebolehgunaan semula kod, fleksibiliti, keselamatan jenis dan kebolehskalaan. Penerangan terperinci: Kelebihan: Kebolehgunaan semula kod: Algoritma biasa dan struktur data Fleksibiliti: Penciptaan masa jalan bagi contoh jenis tertentu Keselamatan jenis: Kompilasi pemeriksaan jenis masa Kebolehlanjutan: Mudah dilanjutkan dan disesuaikan Tujuan: Fungsi biasa: pengisihan, perbandingan Struktur data biasa seperti senarai , peta, tindanan, dsb. Jenis alias: permudahkan pengisytiharan jenis Generik terhalang: pastikan keselamatan 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.

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.

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.

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