Java泛型
来源:互联网 发布:广州恒大淘宝俱乐部 编辑:程序博客网 时间:2024/06/06 03:20
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
为什么需要泛型
在JDK 1.5前,集合使用Object来存储对象,这会导致集合对元素类型没有任何限制,需要增加强制类型转换
使用
所谓泛型就是在定义类、接口、方法时使用形参。
public interface Map<k,v> {Set<K> keyset(); V put(K key,V val); }
从泛型类派生子类
- 继承泛型类或实现泛型接口时,不能再使用类型形参,可以这样做:
public class A<T > extends B <T >
public class A extends B<String> or
public class A extends B(默认T是object) (!这种情况下的重写的返回类型!!!) - 不管传入哪一种类型实参,他们都被java当做同一个类,所以在静态方法、静态初始块和静态变量的声明中不允许使用(类或接口的)类型形参。系统不会真正生成泛型类。
【数组、集合类型的父子关系】
类型通配符
类型通配符是一个问号(?),将一个问号作为类型实参传给List集合,写作List<? >(意思是元素类型未知的List)
- 类型通配符上限
- list(? extends)
- 类型形参的上限
public class A <T extends Integer >
public class A <T extends Integer & interfaceA >
- 类型参数的下限
<? super T>
泛型方法
修饰符 <T,S> 返回类型 方法名(形参)
static <T> T function(Collection<T extends A> )
- 泛型构造器
- 与类型通配符比较(泛型方法,主要用来表达参数之间的关系,以及返回值与参数之间的关系)
- 泛型方法与方法重载
在一个类中可以同时定义如下两个方法:
public static<T> T COPY(Collection<T> dest,Collection<? extends T> src)
public static<T> void COPY(Collection<? super T> dest,Collection<T> src)
但调用时会报错
Java泛型的原理
http://blog.csdn.net/lonelyroamer/article/details/7868820
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- springmvc对session的操作
- 网页在线客服
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法一)
- Tensorflow使用技巧:通过graph.as_graph_def探索函数内部机制
- There is no Action mapped:关于struts2.5解决通配符无法使用问题
- Java泛型
- css3绘制三角形
- git命令总结
- nginx负载均衡简单配置
- 异常处理和正则表达式
- Linux下的重定向和管道
- Shape of HDU / HDU
- java获得平台相关的行分隔符和java路径分隔符的方法
- 镶嵌循环和控制循环