传统方法
- 不能对加入到集合ArrayList中的数据类型进行约束(不安全)
- 遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响 ```java package test;
import java.util.ArrayList; public class Main { public static void main(String[] args) {
//使用传统的方法来解决ArrayList arrayList = new ArrayList();arrayList.add(new Dog("旺财", 10));arrayList.add(new Dog("发财", 1));arrayList.add(new Dog("小黄", 5));//假如我们的程序员,不小心,添加了一只猫//就会抛出异常,程序终止。arrayList.add(new Cat("招财猫", 8));//遍历for (Object o : arrayList) {//向下转型Object ->DogDog dog = (Dog) o;System.out.println(dog.getName() + "-" + dog.getAge());}}
} / 请编写程序,在ArrayList 中,添加3个Dog对象 Dog对象含有name 和 age, 并输出name 和 age (要求使用getXxx()) / class Dog { private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; }
public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
class Cat { //Cat类 private String name; private int age; public Cat(String name, int age) { this.name = name; this.age = age; }
public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
<a name="Sg5fY"></a># 泛型- 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。- 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。**好处:**1. 编译时,检查添加元素的类型,提高了安全性1. 减少了类型转换的次数,提高效率> √不使用泛型> Dog -加入->Object-取出-> Dog//放入到ArrayList 会先转成Object,在取出时,还需要转换成Dog> √使用泛型> Dog->Dog-> Dog//放入时,和取出时,不需要类型转换,提高效率3. 不再提示编译警告```javapackage test;import java.util.ArrayList;public class Main {public static void main(String[] args) {//使用传统的方法来解决===> 使用泛型//1. 当我们 ArrayList<Dog> 表示存放到 ArrayList 集合中的元素是Dog类型//2. 如果编译器发现添加的类型,不满足要求,就会报错//3. 在遍历的时候,可以直接取出 Dog 类型而不是 Object//4. public class ArrayList<E> {} E称为泛型,那么 Dog->EArrayList<Dog> arrayList = new ArrayList<Dog>();arrayList.add(new Dog("旺财", 10));arrayList.add(new Dog("发财", 1));arrayList.add(new Dog("小黄", 5));//假如我们的程序员,不小心,添加了一只猫//arrayList.add(new Cat("招财猫", 8));//报错!!!System.out.println("===使用泛型====");for (Dog dog : arrayList) {System.out.println(dog.getName() + "-" + dog.getAge());}}}/*1.请编写程序,在ArrayList 中,添加3个Dog对象2.Dog对象含有name 和 age, 并输出name 和 age (要求使用getXxx())*/class Dog {private String name;private int age;public Dog(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}class Cat { //Cat类private String name;private int age;public Cat(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

