還不能正確理解Java的泛型類型到底是個什么?接下來好程序員就為大家分析一下。
泛型是將數(shù)據(jù)類型參數(shù)化。(將數(shù)據(jù)類型作為參數(shù)傳遞)。語法:<數(shù)據(jù)類型>
1.1:泛型集合:將數(shù)據(jù)類型作為集合的參數(shù),集合中每個元素必須都是這個泛型的數(shù)據(jù)類型。
1.1.1:泛型集合優(yōu)點:減少頻繁的裝箱和拆箱,以及數(shù)據(jù)類型的判斷 。
1.1.2:泛型集合的特點:一個集合只存一種類型的數(shù)據(jù)。
1.1.3:語法:集合類型<數(shù)據(jù)類型> 集合名=new 集合類型<[數(shù)據(jù)類型]>();
eg:public static void main(String[] args) {
//創(chuàng)建集合對象
List<Cat> alist2=new ArrayList<>();
//向集合中添加元素
alist2.add(new Cat("胖虎", 2));
alist2.add(new Cat("大熊", 1));
alist2.add(new Cat("靜香", 3));
for (Cat a : alist2) {
System.out.println(a.nickName+","+a.age);
}
}
1.2: 泛型迭代器:將數(shù)據(jù)類型作為迭代器的參數(shù),迭代出來的每個元素是泛型的數(shù)據(jù)類型。
注意:如果是用迭代器遍歷泛型集合,那么迭代器一定要用泛型迭代器。
1.2.1:泛型迭代器的作用:減少頻繁的類型轉(zhuǎn)換的問題。
1.2.2:語法:Iterator<數(shù)據(jù)類型> 迭代器對象名=集合名.iterator();
eg:public static void main(String[] args) {
//創(chuàng)建集合對象
List<Cat> alist2=new ArrayList<>();
//向集合中添加元素
alist2.add(new Cat("胖虎", 2));
alist2.add(new Cat("大熊", 1));
alist2.add(new Cat("靜香", 3));
/*用迭代器遍歷集合*/
//獲得集合的迭代器
Iterator<Cat> it1=alist2.iterator();
//先判斷迭代器后面是否有元素可迭代
while (it1.hasNext()) {
//迭代元素
Cat ob1=it1.next();
System.out.println(ob1.nickName+","+ob1.age);
}
}
1.3:泛型類(擴展):將泛型作類的參數(shù)來用。
eg:/**
* 泛型類,<T>表示泛型,T是數(shù)據(jù)類型占位符,在類中T當(dāng)作一種數(shù)據(jù)類型來用
* @author sx
* @version 1.0 2019年8月27日
* @param <T>
*/
public class Student<T> {
/**
* 姓名屬性
*/
public String sname;
/**
* 屬性
*/
public T ss;
}
public static void main(String[] args) {
//創(chuàng)建泛型類的對象
Student<Integer> stu1=new Student<>();
stu1.sname="張三";
stu1.ss=11;
//創(chuàng)建泛型類的對象
Student<String> stu2=new Student<>();
stu2.sname="李四";
stu2.ss="哈哈";
}
1.4:泛型方法:將數(shù)據(jù)類型作為方法的參數(shù)的類型。
eg:/**
* 泛型方法
*/
public <T> void show(T aa) {
System.out.println("泛型參數(shù)為:"+aa);
}
public static void main(String[] args) {
//創(chuàng)建類的對象
Hello h1=new Hello();
//用對象調(diào)用泛型方法
h1.show("我是千鋒人");
h1.show(11);
h1.show('男');
}