泛型:是一种约束,使其该容器只能存储指定的类型,泛型类型限定写在<>里面
例【使用泛型限定只能添加该自定义类型】:
public class Text {
private String name;
private Integer money;
public Text() {
}
public Text(String name, Integer money) {
this.name = name;
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getMoney() {
return money;
}
public void setMoney(Integer money) {
this.money = money;
}
@Override
public String toString() {
return "Text{" +
"name='" + name + '\'' +
", money=" + money +
'}';
}
}
public class CollectionsTest {
public static void main(String[] args) {
//创建集合对象,使用泛型限定只能添加Text文本类型
ArrayList<Text> arrayList = new ArrayList<Text>();
//添加文本元素
arrayList.add(new Text("AA",66));
arrayList.add(new Text("BB",100));
arrayList.add(new Text("CC",88));
arrayList.add(new Text("DD",11));
System.out.println(arrayList);//[Text{name='AA', money=66}, Text{name='BB', money=100}, Text{name='CC', money=88}, Text{name='DD', money=11}]
}
}
默认添加类型是Object,但使用泛型之后,如下泛型类型是Text类型,所以添加类型必须是Text类型,否则报错
例【使用泛型限定只能Integer包装类】:
如上泛型形式中,在Java1.7之前是前后泛型都必须要写的,当Java1.7之后,可以只写前面泛型即可奏效;不能只写后面的泛型,否则是不奏效的
谨记:泛型中的<>内只能是引用数据类型(包装类也是),不能是基本数据类型,否则编译错误
常见泛型
E:Element(元素)
T:Type(类型)
K:Key(键)
V:Value(值)
固定泛型
public class CollectionsTest {
public static void main(String[] args) {
//泛型——Integer【就只能添加Integer类型元素】
ArrayList<Integer> arrayListInteger = new ArrayList();
arrayListInteger.add(55);
arrayListInteger.add(66);
System.out.println(arrayListInteger);//[55, 66]
//泛型——String【就只能添加String类型元素】
ArrayList<String> arrayListString = new ArrayList();
arrayListString.add("A");
arrayListString.add("B");
System.out.println(arrayListString);//[A, B]
//泛型——Double【就只能添加Double类型元素】
ArrayList<Double> arrayListDouble = new ArrayList();
arrayListDouble.add(55.33);
arrayListDouble.add(66.32);
System.out.println(arrayListDouble);//[55.33, 66.32]
//……其它限定类型
}