泛型集合
泛型本质上是提供类型的“类型参数”,也就是参数化类型。我们可以为类、接口或方法指定一个类型参数,通过这个参数限制操作的数据类型,从而保证类型转换的绝对安全。
示例:
package com.cn.泛型集合;
/**
* 狗狗类,宠物的子类。
*/
public class Dog extends Pet {
private String strain;// 品种
/**
* 有参构造方法。
* @param name 昵称
* @param strain 品种
*/
public Dog(String name, String strain) {
super(name);
this.strain = strain;
}
public String getStrain() {
return strain;
}
/**
* 重写父类的print方法。
*/
public void print(){
super.print(); //调用父类的print方法
System.out.println("我是一只 " + this.strain + "。");
}
/**
* 实现吃饭方法。
*/
public void eat() {
super.health = super.health + 3;
System.out.println("狗狗"+super.name + "吃饱啦!健康值增加3。");
}
}
package com.cn.泛型集合;
/**
* 宠物类,狗狗和企鹅的父类。
*/
public abstract class Pet {
protected String name = "无名氏";// 昵称
protected int health = 100;// 健康值
protected int love = 0;// 亲密度
public abstract void eat(); //抽象方法eat(),负责宠物吃饭功能。
/**
* 无参构造方法。
*/
public Pet() {
}
/**
* 有参构造方法。
* @param name 昵称
*/
public Pet(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getHealth() {
return health;
}
public int getLove() {
return love;
}
/**
* 输出宠物信息。
*/
public void print() {
System.out.println("宠物的自白:\n我的名字叫" + this.name +
",健康值是" + this.health + ",和主人的亲密度是"
+ this.love + "。");
}
}
package com.cn.泛型集合;
import java.util.ArrayList;
import java.util.List;
public class text {
// TODO Auto-generated method stub
/**
* 测试对List应用泛型。
*/
public static void main(String[] args) {
/* 1、创建多个狗狗对象*/
Dog ououDog = new Dog("欧欧", "雪娜瑞");
Dog yayaDog = new Dog("亚亚", "拉布拉多");
Dog meimeiDog = new Dog("美美", "雪娜瑞");
Dog feifeiDog = new Dog("菲菲", "拉布拉多");
/* 2、创建ArrayList集合对象并把多个狗狗对象放入其中*/
List<Dog> dogs = new ArrayList<Dog>();//标记元素类型
dogs.add(ououDog);
dogs.add(yayaDog);
dogs.add(meimeiDog);
dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置
//dogs.add("hello"); //出现编译错误,元素类型不是Dog。
/* 3、 显示第三个元素的信息*/
Dog dog3 = dogs.get(2); //无需类型强制转换
System.out.println("第三个狗狗的信息如下:");
System.out.println(dog3.getName() + "\t" + dog3.getStrain());
/*4、使用foreach语句遍历dogs对象*/
System.out.println("\n所有狗狗的信息如下:");
for(Dog dog:dogs){//无需类型强制转换
System.out.println(dog.getName() + "\t" + dog.getStrain());
}
}
}
运行结果:
第三个狗狗的信息如下:
菲菲 拉布拉多
所有狗狗的信息如下:
欧欧 雪娜瑞
亚亚 拉布拉多
菲菲 拉布拉多
美美 雪娜瑞