Generik Java dan analisis contoh kelas pembalut
1. Apakah itu generik?
Intipati generik adalah untuk membuat parameter jenis (tanpa mencipta jenis baharu, untuk mengawal jenis sekatan parameter tertentu melalui jenis yang ditentukan oleh generik) ).
Pertama lihat contoh berikut:
Tatasusunan yang kami pelajari sebelum ini hanya boleh menyimpan elemen jenis tertentu. Contohnya: int[] array=new int[10];String[] array=new String[10];
Kelas Objek ialah kelas induk bagi semua kelas, jadi bolehkah kita mencipta tatasusunan Obj?
class Myarray{ public Object[] array=new Object[10]; public void setVal(int pos,Object val){ this.array[pos]=val; } public Object getPos(int pos){ return this.array[pos]; } } public class TestDemo{ public static void main(String[] args) { Myarray myarray=new Myarray(); myarray.setVal(1,0); myarray.setVal(2,"shduie");//字符串也可以存放 String ret=(String)myarray.getPos(2);//虽然我们知道它是字符串类型,但是还是要强制类型转换 System.out.println(ret); } }
Selepas melaksanakan kod di atas, kami mendapati:
Sebarang jenis data boleh disimpan
Tidak . 2 Objek yang dimuat turun pada asalnya adalah rentetan, tetapi penukaran jenis paksa
diperlukan untuk memperkenalkan generik Tujuan generik adalah untuk menentukan jenis objek yang sepatutnya disimpan oleh bekas semasa Pengkompil menyemaknya sendiri.
2. Sintaks generik
nama kelas generik kelas< senarai parameter jenis>{
//Parameter jenis boleh digunakan di sini
}
Penggunaan generik:
Kelas generik
nama pembolehubah=kelas generik baharu (parameter sebenar kaedah pembina)
MyArray list=new MyArray<>();
[Nota]
- < Jenis <> selepas 🎜>
- mewakili pemegang tempat, menunjukkan bahawa kelas semasa ialah kelas generik
- Apabila membuat instantiat generik, <> tidak boleh Ia adalah jenis yang mudah dan perlu menjadi kelas pembalut
- <> komposisi jenis yang tidak mengambil bahagian dalam generik
- tidak boleh Tatasusunan jenis generik baharu
- Menggunakan generik tidak memerlukan pemutus
//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型 //在实例化泛型类时,必须指定T的具体类型 public class Test<T>{ //key这个成员变量的类型为T,T的类型由外部指定 private T key; public Test(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定 this.key = key; } public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定 return key; } }
Sintaks: nama kelas generik kelasContoh:{ }
kelas awam MyArray{} //E hanya boleh menjadi Nombor atau subkelas Nombor
kelas awam MyArray< E extends Comparable[Nota] E tanpa sempadan tertentu boleh dilihat Jadikan E melanjutkan Objek4. Watak kad bebas ? Untuk kegunaan dalam generik, ia adalah kad bebas. Kad bebas digunakan untuk menyelesaikan masalah bahawa jenis anti-generik tidak boleh menjadi kovarian. Dua keping kod berikut:>{}//E mestilah kelas yang melaksanakan antara muka Sebanding
代码一: public static<T> void printList1(ArrayList<T> list){ for(T x:list){ System.out.println(x); } } 代码二: public static<T> void printList2(ArrayList<?> list){ for(Object x:list){ System.out.println(x); } }
/Jenis parameter sebenar yang boleh dihantar ialah Nombor atau subkelas NomborContoh: Untuk perhubungan berikut, kita perlu menulis kaedah untuk mencetak senarai yang menyimpan subkelas Haiwan atau Haiwan.
Haiwan
Kucing memanjangkan HaiwanAnjing memanjangkan Haiwan
Kod 1:
Pada masa ini jenis T ialah Subkelas haiwan atau diri sendiri.
public static <t extends Animal> void print1(List<T> list>{ for(T animal:list){ System.out.println(animal);//调用了T的toString } }
melalui kad bebas Perbezaan antara dua kod:
public static void print2(List<? extends Animal> list){ for(Animal animal:list){ Syatem.out.println(animal);//调用了子类的toString方法 } }
- Untuk kaedah yang dilaksanakan oleh kad bebas, ia bersamaan dengan menetapkan Haiwan dan membenarkan subkelas Haiwan dihantar masuk. Subkategori khusus tidak jelas pada masa ini. Contohnya: apabila Cat dihantar masuk, jenis yang diisytiharkan ialah Haiwan Hanya dengan menggunakan polimorfisme kaedah Cat boleh dipanggil
- hubungan kelas induk-anak & rarr; 🎜>
MyArrayList> adakah MyArrayList< ;? melanjutkan kelas induk Number> [Nota]
ArrayList<Integer> arrayList1 = new ArrayList<>(); ArrayList<Double> arrayList2 = new ArrayList<>(); List<? extends Number> list = arrayList1; //list.add(1,1);//报错,此时list的引用的子类对象有很多,再添加的时候,任何子类型都可以,为了安全,java不让这样进行添加操作。 Number a = list.get(0);//可以通过 Integer i = list.get(0);//编译错误,只能确定是Number子类
- Sempadan atas kad bebas sesuai untuk membaca tetapi bukan untuk menulis.
- (2) Sempadan bawah kad bebas Sintaks:
< ; ? super Integer>//Jenis parameter yang boleh dihantar ialah Integer atau kelas induk Integer
Hubungan kelas induk-anak bagi sempadan bawah kad bebas:
MyArrayList super Integer>是MyArrayList
的父类类型 MyArrayList<?>是MyArrayList super Integer>的父类
通配符下界适合写入元素,不适合读取。
5、包装类
在Java中,由于基本类型不是继承自Object,为了在泛型中可以支持基本类型,每个基本类型都对应了一个包装类。除了Integer和Character,其余基本类型的包装类都是首字母大写。
拆箱和装箱:
int i=10; //装箱操作,新建一个Integer类型对象,将i的值放入对象的某个属性中 Integer ii=i; //自动装箱 //Integer ii=Integer.valueOf(i); Integer ij= new Integer(i);//显示装箱 //拆箱操作,将Integer对象中的值取出,放到一个基本数据类型中 int j=ii.intValue();//显示的拆箱 int jj=ii;//隐式的拆箱Salin selepas log masukAtas ialah kandungan terperinci Generik Java dan analisis contoh kelas pembalut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.
