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中的泛型其实是给编译器看的,编译过程中会有一个【泛型擦除】的过程,在字节码中已经看不到定义的类型了。

posted on 2016-06-25 08:16  一只小蜗牛12138  阅读(172)  评论(0编辑  收藏  举报

导航