美文网首页Java
Java19-5 泛型

Java19-5 泛型

作者: 第二套广播体操 | 来源:发表于2019-01-14 20:36 被阅读0次

    向下转型防止类型不一致为了避免这个问题 只能主观上控制
    为了运行时不出现类型错误,可以在定义容器时,就明确容器中的元素类型
    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;
        }
    }
    

    相关文章

      网友评论

        本文标题:Java19-5 泛型

        本文链接:https://www.haomeiwen.com/subject/qvvjdqtx.html