Java泛型应用浅析

         Java泛型,饿,这个东西吗,嚼一下还是有必要的。有啥用呢?小弟曾觉着吧,吹牛是条不错的出路,但没一次没有不吹破的。(绕吧^_^)
         详解呢,没啥必要了,参见附件解压后Java泛型详解.txt(引用网址…小弟知错了T^T)。
 
一、泛型概念简述
         泛型吗,就是泛泛的类型,指代某一种类型的符号。例如Map<K,V>,K、V指代某种类型一样。而我们呢,在内部则直接用K、V来进行处理。
         这样有啥好处呢?1.消除强制类型转换;2.附加类型检查,避免错误类型;3.确保Java类型安全(这才是主要目的)等。相信用过集合框架的都有类似体会。
 
二、泛型基础特征
         1)在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式 类型参数。例如java.util.Map接口的定义:

         public interface Map<K, V> {

                   public void put(K key, V value);

                   public V get(K key);

         }
          命名方式约定以大写的单个字母名称作为类型参数。常见泛型推荐的名称:K,键;V,值;E,异常类;T,泛型。
 

         2)泛型不是协变的,即无法向上转型。不同于Object obj = new String("str"),以下方式是错误的:

         List<String> strList = new ArrayList<String>();

         List<Object> objList = strList; // invalid

         如果第二行写成List objList = strList,可以通过编译但会出现警告(类型不安全)。那如何表示泛型为一个通用泛型,就是定义个尖括号内可以放任意类型的泛型呢?这是就要使用类型通配符了。
 
         3) 类型通配符,’?’表示。可以声明一个List<?>,作为任何泛型List的父类型。即List<?> objList = strList,这样就没啥问题了。
 
         4) 受限泛型,即给泛型定义上下限。简单说,就是类型参数必须是某类及其子类(上限),或者是某类及其父类(下限)。
         怎么弄捏,例如List为传入参数,限定类型参数必须为Number,如下:
         public void fun(List<? extends Number> list) {…}
         上述List只接收Number及Number的子类。另一种方式,只接收Integer及其父类,则如下:public void fun(List<? super Integer> list) {…}。
 
三、泛型简单应用
         OK,现在开始本文最切题的章节啦,各位看官还请拭目以待^_^!
         ……
         参见附件-_-!
 
         附个内容表吧:
包名
样例名
备注
org.join.generic.one
样例1:泛型类
一个和多个类型参数的泛型类
org.join.generic.two
样例2:通配符
输出了泛型类成员变量类型
org.join.generic.three
样例3:受限泛型
extends、super
org.join.generic.four
样例4:泛型接口
泛型接口及其实现
org.join.generic.five
样例5:泛型方法
返回泛型示例、统一参数类型
org.join.generic.six
样例6:泛型数组
泛型数组使用
org.join.generic.seven
样例7:泛型嵌套
Map&List嵌套
 
四、后记
         手冷,呜呜…