1. Java的集合类有一个重要的局限:将对象置入集合中后,类型信息会被抛弃,但取出时则需要被显式指定为某种类型。所以不同种类的对象依然可以被置入同一个集合中。如下面的例子:
import java.util.*;
class Cat{
private int num;
Cat(int num){
this.num = num;
}
void print(){
System.out.println("Cat Number is " + this.num);
}
}
class Dog{
private int num;
Dog(int num){
this.num = num;
}
void print(){
System.out.println("Dog Number is " + this.num);
}
}
public class TestVariableScope {
public static void main(String[] args) {
Vector v = new Vector();
for(int i = 0; i < 6; i++){
v.addElement(new Cat(i));
}
v.addElement(new Dog(6));
for(int i = 0; i < v.size()-1; i++){
((Cat)v.elementAt(i)).print();
}
((Dog)v.elementAt(v.size()-1)).print();
}
}
输出结果为:
Cat Number is 0
Cat Number is 1
Cat Number is 2
Cat Number is 3
Cat Number is 4
Cat Number is 5
Dog Number is 6
如果在没有用Dog显式指定类型的话,则会抛出一个类型转换异常。