zoukankan      html  css  js  c++  java
  • javase高级技术

    在写案例之前,先简单回顾下泛型的知识

    我们知道,java属于强变量语言,使用变量之前要定义,并且定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。

    所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。我们用<>来表示。

    可以用在类上public class a<T>

    可以用在接口上public interface  a<T>

    可以用在方法的返回值上 public <T> T a();

    泛型类在定义的时候可以不指定类型,但是在使用的时候必须制定类型,也就是new的时候

    泛型通配符

    <T extends Object>  只能是Object类以及他的子类

    <T superObject>  只能是Object类以及他的父类

    ============分割线===================

    案例 在参数定义int的集合中,添加String 元素

    List<Integer> list = new ArrayList<Integer>() 中添加字符串

    	@Test
    	public void test() throws Exception, NoSuchMethodException
    	{
    		List<Integer> list = new ArrayList<Integer>();
    		Class  listClass= list.getClass();
    		Method addMethod = listClass.getMethod("add", Object.class);
    		addMethod.invoke(list,"aaaaa");
    		System.out.println(list.get(0));  //输出为aaaaaa  测试成功 查看源码发现add的底层添加的是Object
    	}
    

      

     总结: java中的泛型其实是给编译器看的,编译过程中会有一个【泛型擦除】的过程,在字节码中已经看不到定义的类型了。

  • 相关阅读:
    AD用户移除所属组
    Mysql中文乱码问题完美解决方案
    将sqllite3数据库迁移到mysql
    检查远端服务器端口是否打开
    远程桌面卡
    不同平台的线程并发接口对比
    stm32之中断配置
    stm32之CMSIS标准、库目录、GPIO
    stm32 中断几个库函数实现过程分析
    Tree命令使用
  • 原文地址:https://www.cnblogs.com/javabigdata/p/5615756.html
Copyright © 2011-2022 走看看