今天看了一下泛型的知识,先来看这段代码

public static void main(String[] args) {
List list=new ArrayList();
list.add("zhang");
list.add("han");
list.add(5);

for(Iterator it=list.iterator();it.hasNext();) {
String str=(String)it.next();
System.out.println(str.length());
}

}

结果会出现ClssCastException,原因是add的时候出现了string和int两种类型,而后边只有string,所以到5的时候出现了异常。所以我们使用泛型规定了数据类型就不会出现异常,而在编译的时候有问题的话直接出现编译错误。代码如下:

public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("zhang");
list.add("han");
list.add("55");

for(Iterator<String> it=list.iterator();it.hasNext();) {
String str=(String)it.next();
System.out.println(str.length());
}

}

现在编译器会提示type safety,而在之前的代码出现了波浪线,那就是因为会出现异常,不安全的提醒。

泛型的目的是增强集合使用的灵活性,把隐患控制在编译阶段,若有类型不匹配,及时给出编译警告。

还有泛型类public class TestClassName<T,S extends T>

泛型方法public<T,S extends T> T textMethod(T t,S s)

然后再进行实例化即可。中间还有迭代器的一些东西:

迭代器用来遍历和选择对象,底下有

hasnext()判断是否还有元素

next()获取下个元素

remove()删除下个元素。