Java疯狂讲义(第8章——泛型)(读书笔记)

第8章泛型

这章学不太懂,所以简单记录一下,如果要用到这方面的知识,我再专门来学习一下。

8.1 泛型入门

8.1.2 使用泛型

从Java5以后,Java引用了“参数化类型(parameterized type)”的概念,允许程序在创建集合时指定集合元素的类型,正如在第7章的ShowHand.java程序中见到的List,这表明List只能保存字符串类型的对象。Java的参数化类型被称为泛型。

8.2 深入泛型

可以为任何类、接口增加反省声明(并不是只有集合类才可以使用泛型声明,虽然集合类是泛型的重要使用场所)。下面定义一个Apple类,这个Apple类就可以包含一个泛型声明:

8.3 类型通配符

8.4 泛型方法

泛型方法的语法格式如下:

修饰符<T, S>返回值类型 方法名(形参列表)
{
// 方法体...
}
import java.util.ArrayList;
import java.util.Collection;

public class GenericMethodTest {
    // 声明一个泛型方法,该泛型方法中带一个T类型形参
    static <T> void fromArrayToCollection(T[] a, Collection<T> c){
        for (T o: a){
            c.add(o);
        }
    }

    public static void main(String[] args) {
        Object[] oa = new Object[100];
        Collection<Object> co = new ArrayList<>();
        // 下面代码中T代表Object类型
        fromArrayToCollection(oa, co);
        String[] sa = new String[100];
        Collection<String> cs = new ArrayList<>();
        // 下面代码中T代表String类型
        fromArrayToCollection(sa, cs);
        // 下面代码中T带代表Object类型
        fromArrayToCollection(sa, co);
        Integer[] ia = new Integer[100];
        Float[] fa = new Float[100];
        Number[] na = new Number[100];
        Collection<Number> cn = new ArrayList<>();
        // 下面代码中T代表Number类型
        fromArrayToCollection(ia, cn);
        // 下面代码中T代表Number类型
        fromArrayToCollection(fa, cn);
        // 下面代码中T代表Number类型
        fromArrayToCollection(na, cn);
        // 下面代码中T代表Obejct类型
        fromArrayToCollection(na, co);
        // 下面代码中T代表String类型,但na是要给Number数组
        // 因为Number既不是String类型
        // 也不是它的子类,所以出现编译错误
        // fromArrayToCollection(na, cs);
    }
}

8.5 擦除和转换

8.6 泛型与数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值