向下转型防止类型不一致为了避免这个问题 只能主观上控制
为了运行时不出现类型错误,可以在定义容器时,就明确容器中的元素类型
jdk1.5版本以后解决了问题4
List<E> class文件没有 只在编译时显示
一旦发现类型不匹配,就会编译失败 在编译时发现问题
这个技术就是泛型技术 int 改成对象 Integer 不需要强制转换
public class Generic_Test1 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
String next = iterator.next();
System.out.println(next);
}
}
}
确定类型为String 如果元素类型不是则会报错、
泛型的表现 :泛型在集合框架中应用范围很大
什么时候需要写泛型:只要看到类或者接口右面有<>,就需要泛型
其实容器在不明确操作元素的类型的情况下对外提供了一个参数用<>封装
泛型 就是传递类型参数
public class Generic_Test2 {
public static void main(String[] args) {
Set<Student> set=new TreeSet<Student>(new ComparatorByName_G());
set.add(new Student( "abc",20));
set.add(new Student("bbc",23));
set.add(new Student("cbc",21));
set.add(new Student("dbc",20));
for (Iterator<Student> iterator = set.iterator(); iterator.hasNext(); ) {
Student next = iterator.next();
System.out.println(next.toString());
}
}
}
public class ComparatorByName_G implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
int temp=o1.getName().compareTo(o2.getName());
return temp==0?o1.getAge()-o2.getAge():temp;
}
}
网友评论