• List 原生态类型


    1.前言

    java的范型接触的很多了.比如List<String> ,这样能保证list在插入数据的时候能插入正确的String类型的数据,但是如果不声明范型直接使用原生态类型,比如: List的话,就会有很多问题,

    比如类型转化异常.

    2.示例

            List list = new ArrayList();
            list.add("123");
            Integer a = (Integer) list.get(0);
            //Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')
            //at demo02.CollectionsTest.main(CollectionsTest.java:17)

    比如这段代码就会抛出异常,因为我们不确定具体的list里面是什么类型,在使用的时候很容易抛出类型转化异常.

    所以建议使用 <T>来描述要代表的类型

    3.其他

    List<?> 代表一个通配符类型,表示包含未知类型对象的集合,List<Object> 代表可以包含任意对象,而 List 是原生态,因为没有<>,原生态脱离了范型系统,所以不建议使用原生态.

    在举一个例子:

        public static void main(String[] args) {
            List<String> strings = new ArrayList<>();
            unsafeAdd(strings, Integer.valueOf(1));
            String s = strings.get(0);
            System.out.println(s);
           
        }
        
        private static void unsafeAdd(List  list, Object o) {
            list.add(o);
        }

    unsafeAdd方法中使用了原生态,这段代码会编译通过,但是在get(0) 会抛出异常,因为Integer无法转化为String.

    如果在List中加上<Object>或者<?>编译器就会提示编译错误,这样可以减少代码很多错误.

    其他集合也同理.

  • 相关阅读:
    全排列生成算法
    Jekyll + Github 搭建属于你的静态博客
    Merge k Sorted Lists
    Manacher's algorithm
    ADWORLD web/warmup
    数据结构/chap1 &chap2/选择判断/复习
    数据结构/PTA-两个有序链表序列的交集/链表
    数据结构/PTA-符号配对/栈
    数据结构/PTA-列车调度/栈/数组
    数据结构/PTA-堆栈操作合法性/数组/
  • 原文地址:https://www.cnblogs.com/lishuaiqi/p/12891736.html
Copyright © 2020-2023  润新知