码迷,mamicode.com
首页 > 编程语言 > 详细

给大忙人看的Java核心技术笔记(6、泛型编程)

时间:2016-06-27 17:02:59      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

要点:

  泛型类是带有一个或多个类型参数的类

  泛型方法是带有类型参数的方法

  可以要求类型参数必须是一个或者多个类型的子类型

  泛型类型是不变得:当S是T的子类型是,G<S>和G<T>没有关系

  通过使用通配符G<? extends T>或者 G<? super T>,你可以指定一个方法接受一个带子类或父类参数的泛型类型的实例

  当泛型类和方法被编译时,类型参数会被擦除

  类型擦除对泛型有诸多限制。特别是,不能实例化泛型类或数组。不能转换成泛型类型,或者抛出一个泛型类型对象。

  即使泛型类和方法在虚拟机中被擦除,你也可以在运行时找出他们是如何声明的。

1、泛型类

  ※类型参数不能用基本类型实例化。例如Entry<String, int>在Java中是无效的。

  当构造一个泛型类对象时,可以在构造函数中省略类型参数。

1 Entry<String, Integer> entry = new Entry<>("1",1);

2、泛型方法

  当声明一个反洗方法时,类型参数要放在修饰符之后,返回类型之前。当调用时,不要指定类型参数。它可以从方法的参数和返回类型中推断出来。

  也可以在调用时候显示的写出来

1 public static <T> void swap(T[] array, int i, int j);
2 Arrays.<String>swap(friends,0,1);

3、类型限定

  泛型类或方法的类型参数需要满足某些要求,或者是需要能够调用一些通用的方法。可以对类型做出限定。

  T extends AutoCloseable

  类型参数可以有多个限定:  T extends Runnable & AutoCloseable

  ※可以有多个接口限定,但最多只能有一个是类。如果有一个限定是类,则它必须放在限定列表的第一位。

 

给大忙人看的Java核心技术笔记(6、泛型编程)

标签:

原文地址:http://www.cnblogs.com/Greekjone/p/5620593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!