目录
1.什么是泛型?
1.泛型就是用来限制我们的数据类型。
2.为什么使用泛型呢?
我们原来在定义集合时,时使用的Object的数据类型,那么我们获取相关元素就需要进行类型强制转换,获取元素时不方便对元素进行相应的其他操作。
例·:
//没有使用泛型的集合
List list=new ArrayList();
list.add(3);
list.add(2);
list.add(1);
//获取元素需要强转
int num=(Integer) list.get(0);
System.out.println(num);
2.如何使用泛型
2.1 List泛型
List<类型> list=new ArrayList<类型>(); :只能在该集合中存储指定得类型。
//List泛型
//<>内限制集合添加的数据类型
List<Integer> list1 = new ArrayList<>();
list1.add(6);
list1.add(8);
list1.add(7);
//现在获取数据不需要进行类型转换,此时集合默认数据类型为Integer
int b=list1.get(1);
System.out.println(b);
//<K,V>:K:表示键的泛型,V:表示值的泛型
HashMap<String,String> map = new HashMap<>();
map.put("姓名","派大星");
map.put("颜色","粉色");
map.put("形状","五角星");
//获取该集合的所有key
Set<String> set = map.keySet();
System.out.println(set);
//获取指定key的value
System.out.println(map.get("颜色"));
2.2 自定义泛类
语法:
public class 类名<标识,标识....> {
标识 变量名;
public 标识 方法名(){
}
public void 方法名(标识 参数名){
}.........
}
定义Cat类:
//自定义泛类
public class Test2 {
public static void main(String[] args) {
//不设定泛型时,对象默认数据类型为Object
Cat cat1 = new Cat();
cat1.setColor("蓝色");
cat1.setPz(1);
//获取元素时需要转型,否则报错
//String color=cat1.getColor();
String color=(String)cat1.getColor();
System.out.println(color);
//这里的泛型必须都是对象类型
Cat<String> cat2 = new Cat<>();
cat2.setColor("黄色");
cat2.setPz("田园大橘");
String color2=cat2.getColor();
System.out.println(color2);
cat2.show();
}
}
class Cat<H>{
//属性私有化
private H color;
private H pz;
//构造方法
public Cat() {
}
public Cat(H color, H pz) {
this.color = color;
this.pz = pz;
}
//show方法
public void show(){
System.out.println("猫咪的颜色:"+color+" 品种:"+pz);
}
//setter、getter方法
public H getColor() {
return color;
}
public void setColor(H color) {
this.color = color;
}
public H getPz() {
return pz;
}
public void setPz(H pz) {
this.pz = pz;
}
}