文档章节

JAVA泛型

lissownpro
 lissownpro
发布于 2017/07/26 10:05
字数 327
阅读 8
收藏 0

泛型的使用

Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。

只要在上例中将第1行代码改成如下形式,那么就会在编译list.add(100)时报错。

  1. List<String> list = new ArrayList<String>();  

泛型只在编译阶段有效

ArrayList<String> a = new ArrayList<String>();
ArrayList b = new ArrayList();
Class c1 = a.getClass();
Class c2 = b.getClass();
System.out.println(a == b)
//返回结果true

所有反射的操作都是在运行时的,既然为true,就证明了编译之后,程序会采取去泛型化的措施,也就是说Java中的泛型,只在编译阶段有效

    ArrayList<String> a = new ArrayList<String>();  
    a.add("CSDN_SEU_Cavin");  
    Class c = a.getClass();  
    try{  
        Method method = c.getMethod("add",Object.class);  
        method.invoke(a,100);  
        System.out.println(a);  
    }catch(Exception e){  
        e.printStackTrace();  
    }  

因为绕过了编译阶段也就绕过了泛型,输出结果为:

[CSDN_SEU_Cavin, 100]

泛型类和泛型方法

    public static class FX<T> {  
        private T ob; // 定义泛型成员变量  
      
        public FX(T ob) {  
            this.ob = ob;  
        }  
      
        public T getOb() {  
            return ob;  
        }  
      
        public void showTyep() {  
            System.out.println("T的实际类型是: " + ob.getClass().getName());  
        }  
    }  
        public static void main(String[] args) {  
            FX<Integer> intOb = new FX<Integer>(100);  
            intOb.showTyep();  
            System.out.println("value= " + intOb.getOb());  
            System.out.println("----------------------------------");  
      
            FX<String> strOb = new FX<String>("CSDN_SEU_Calvin");  
            strOb.showTyep();  
            System.out.println("value= " + strOb.getOb());  
    }  

泛型的好处

    Lits list1 = new ArrayList();  
    list1.add("CSDN_SEU_Cavin ");  
    String str1 = (String)list1.get(0);  

    List<String> list2 = new ArrayList<String>();  
    list2.add("CSDN_SEU_Cavin ");  
    String str2 = list2.get(0);  

 

© 著作权归作者所有

lissownpro
粉丝 1
博文 38
码字总数 16024
作品 0
西安
程序员
私信 提问

暂无文章

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
26分钟前
12
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
34分钟前
9
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
41分钟前
6
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
59分钟前
12
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部