栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

窥探Java心法-泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

窥探Java心法-泛型

泛型(泛:广泛)—> 广泛的数据类型

    将某一个类/接口/方法/变量的数据类型象使用参数一样传递给类/接口/方法/变量。
    数据类型的参数化,任意化

没有使用泛型的情况

public static void main(String[] args) {
    List list = new ArrayList();
    list.add(1);
    list.add(3);
    list.add("hello");
    list.add(new Object());
    for (Object obj:list) {
        System.out.println((String)obj);
    }
}


    通过上面的场景我们发现List中默认可以存放任意类型的数据,但是在具体操作的时候,如果数据类型不一致就会出现上面的类型转换异常的错误,为了避免这种情况我们可以在声明的时候来指定泛型【也就是list中能够存放的数据类型】


    我们在申明ArrayList时,指定了存储类型为String 所以在编译阶段,我们存入其他类型的元素,就会报出错误.即我们的申明强制的指定了ArrayList集合中存储的元素只能是指定的String类型.
    这就是泛型使用的本质意义所在,指定参数化类型

泛型的类型擦除

    泛型只在编译阶段有效,泛型类型在逻辑上可看成是多个不同的类型,但是其实质都是同一个数据类型
    编译之后程序会采取去泛型化的措施,通过案例演示来介绍

public static void main(String[] args) throws  Exception{
    List stringList = new ArrayList<>();
    stringList.add("1");
    stringList.add("hello");
    stringList.add("GUPAO");
    for(Object obj:stringList ){
    	System.out.println((String)obj);
    }
    // 通过反射的方式添加数据到集合中
    Class aClass = stringList.getClass();
    Method method = aClass.getDeclaredMethod("add", Object.class);
    method.invoke(stringList,new Object());
    System.out.println(stringList);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号