Java 泛型通配符解释
2017-04-06 16:45
246 查看
前言
最近看Rxjava retrofit 中到处都是泛型类型定义,不得不重新整理一下资料,简单介绍,满足基本理解使用。
使用
里面所有 T 标识,表示接收外部传递类型参数
带返回值
Eg:
这里查看Rxjava泛型方法定义
泛型方法必须加标识
Observable 泛型返回类型
OnSubscribe f 泛型T的类型
f 泛型类型
说明一下,定义泛型方法时,必须在返回值前边加一个,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。
OnSubscribe的作用就是指明泛型的具体类型,而OnSubscribe类型的变量t,可以用来创建泛型类的对象。
当然,泛型方法不是仅仅可以有一个参数OnSubscribe,可以根据需要添加其他参数。
为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。
定义泛型方法语法格式如下:
调用泛型方法语法格式如下:
引用
泛型 http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
java泛型 http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
最近看Rxjava retrofit 中到处都是泛型类型定义,不得不重新整理一下资料,简单介绍,满足基本理解使用。
定义什么是泛型?
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。一 java通配符 <T>,<E>,<K,V>,<?>
使用"<T>"来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type),如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等,若是
<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。
二 泛型类型限制写法上下界
Java上界通配符 <? extends Fruit> Java 下界通配符 <? super Fruit> Eg: 上界通配符 public static void upMethod(List<? extends Fruit> list){ //编译报错 //使用通配符后,不能在往集合类中添加元素 //list.add(); //使用通配符后,是可以取出元素的 //所有取出的元素,都是上界父类元素 Fruit fruit = list.get(0); } 下界通配符 public static void downMethod(List<? super Fruit> list){ //下界通配符可以往容器内添加元素 //但是有限制,必须是Fruit的子类或者本身,父类是添加不进去的 list.add(new Apple()); //取出元素的类型都为Object Object object = list.get(0); }
class Box<T> { private T data; public Box() { } public Box(T data) { this.data = data; } public T getData() { return data; } }
里面所有 T 标识,表示接收外部传递类型参数
Eg: new Box<String>(); new Box( “ 我是泛型T”)
里面的<T> 表示String类型
泛型方法
不带返回值public Box(T data) { this.data = data; }
带返回值
Public T Box(T data) { Return data; }
Eg:
public final static <T> Observable<T> create(OnSubscribe<T> f) { return new Observable<T>(hook.onCreate(f)); }
这里查看Rxjava泛型方法定义
public final static <T> Observable<T> create(OnSubscribe<T> f) { return new Observable<T>(hook.onCreate(f)); }
泛型方法必须加标识
Observable 泛型返回类型
OnSubscribe f 泛型T的类型
f 泛型类型
泛型参数
Box(T data)
说明一下,定义泛型方法时,必须在返回值前边加一个,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。
OnSubscribe的作用就是指明泛型的具体类型,而OnSubscribe类型的变量t,可以用来创建泛型类的对象。
当然,泛型方法不是仅仅可以有一个参数OnSubscribe,可以根据需要添加其他参数。
为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。
定义泛型方法语法格式如下:
调用泛型方法语法格式如下:
引用
泛型 http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
java泛型 http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
相关文章推荐
- Java 理论与实践: 使用通配符简化泛型使用
- Java 理论与实践: 使用通配符简化泛型使用
- Java 理论与实践:使用通配符简化泛型使用
- Java 通配符泛型例子
- java中泛型之类型通配符(?)
- Java 理论与实践:使用通配符简化泛型使用
- Java 泛型(二) 泛型之中的通配符(Wildcards)使用
- 18---java中泛型02(通配符)
- 初学Java,泛型类型通配符(三十七)
- 黑马程序员_java中泛型(通配符)与反射技术
- [转贴] Java 理论与实践: 使用通配符简化泛型使用
- java使用通配符简化泛型使用
- Java 理论与实践: 使用通配符简化泛型使用
- Java 通配符泛型例子
- Java 泛型类型通配符
- Java 理论与实践:使用通配符简化泛型使用,第 2 部分
- Java 理论与实践: 使用通配符简化泛型使用
- Java 理论与实践: 使用通配符简化泛型使用 (二)
- java中泛型学习1之类型通配符(?)
- Java 泛型学习三 通配符