java泛型 包_Java泛型应用浅析

Java泛型应用浅析

Java泛型,饿,这个东西吗,嚼一下还是有必要的。有啥用呢?小弟曾觉着吧,吹牛是条不错的出路,但没一次没有不吹破的。(绕吧^_^)

详解呢,没啥必要了,参见附件解压后Java泛型详解.txt(引用网址…小弟知错了T^T)。

一、泛型概念简述

泛型吗,就是泛泛的类型,指代某一种类型的符号。例如Map,K、V指代某种类型一样。而我们呢,在内部则直接用K、V来进行处理。

这样有啥好处呢?1.消除强制类型转换;2.附加类型检查,避免错误类型;3.确保Java类型安全(这才是主要目的)等。相信用过集合框架的都有类似体会。

二、泛型基础特征

1)在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数。例如java.util.Map接口的定义:

public interface Map {

public void put(K key, V value);

public V get(K key);

}

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

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

List strList = new ArrayList();

List 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嵌套

四、后记

手冷,呜呜…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值