JDK1.4类型不明确:装入集合的类型都被当做Object对待,从而失去自己的实际类型;从集合中取出对象时往往需要转型,效率低,容易产生错误。
解决方法:--泛型
在定义集合的时候同时定义集合中对象的类型,可以在定义Collection的时候指定,也可以在循环时用Iterator指定。
优点:增强程序的可读性和稳定性。
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class GenericTest {
public static void main(String[] args) {
List<String> c = new ArrayList<String>();//定义集合的同时,定义集合内元素的类型
c.add("aa");
c.add("bb");
c.add("cc");
for(int i=0; i<c.size(); i++) {
String s = c.get(i);//无需转型
System.out.println(s);
}
Collection<String> c2 = new HashSet<String>();
c2.add("aa");
c2.add("bb");
c2.add("cc");
Iterator<String> iter = c2.iterator();//定义迭代的元素类型
while(iter.hasNext()) {
String s = iter.next();//这里就无需要转型
System.out.println(s);
}
}
}
class MyName implements Comparable<MyName> {//直接定义实现Comparable接口内,进行比较的元素类型
int age;
public int compareTo(MyName mn) {
if(this.age > mn.age)//mn无需转型
return 1;
else if(this.age < mn.age)
return -1;
else
return 0;
}
}