您的位置:首页 > 编程语言 > Java开发

Java泛型应用浅析

2013-03-01 16:34 260 查看
Java[/b]泛型应用浅析[/b]

Java泛型,饿,这个东西吗,嚼一下还是有必要的。有啥用呢?小弟曾觉着吧,吹牛是条不错的出路,但没一次没有不吹破的。(绕吧^_^)
详解呢,没啥必要了,参见附件解压后Java泛型详解.txt(引用网址…小弟知错了T^T)。

一、泛型概念简述[/b]
泛型吗,就是泛泛的类型,指代某一种类型的符号。例如Map<K,V>,K、V指代某种类型一样。而我们呢,在内部则直接用K、V来进行处理。
这样有啥好处呢?1.消除强制类型转换;2.附加类型检查,避免错误类型;3.确保Java类型安全(这才是主要目的)等。相信用过集合框架的都有类似体会。

二、泛型基础特征[/b]
1)在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数[/b]。例如java.util.Map接口的定义:
public interface Map<K, V> {
public void put(K key, V value);
public V get(K key);
}
命名方式[/b]约定以大写的单个字母名称作为类型参数。常见泛型推荐的名称:K,键;V,值;E,异常类;T,泛型。

2)泛型不是协变的[/b],即无法向上转型。不同于Object obj = new String("str"),以下方式是错误的:
List<String> strList = new ArrayList<String>();
List<Object> objList = strList; // invalid
如果第二行写成List objList = strList,可以通过编译但会出现警告(类型不安全)。那如何表示泛型为一个通用泛型,就是定义个尖括号内可以放任意类型的泛型呢?这是就要使用类型通配符了。

3)类型通配符[/b],’?’表示。可以声明一个List<?>,作为任何泛型List的父类型。即List<?> objList = strList,这样就没啥问题了。

4)受限泛型[/b],即给泛型定义上下限。简单说,就是类型参数必须是某类及其子类(上限),或者是某类及其父类(下限)。
怎么弄捏,例如List为传入参数,限定类型参数必须为Number,如下:
public void fun(List<? extends Number> list) {…}
上述List只接收Number及Number的子类。另一种方式,只接收Integer及其父类,则如下:public void fun(List<? super Integer> list) {…}。

三、泛型简单应用[/b]
OK,现在开始本文最切题的章节啦,各位看官还请拭目以待^_^!
……
参见附件-_-!

附个内容表吧:

[align=center]包名[/b][/align]
[align=center]样例名[/b][/align]
[align=center]备注[/b][/align]
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嵌套
四、后记[/b]
手冷,呜呜…
本文出自 “-_--___---_-” 博客,请务必保留此出处/article/4571569.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: