泛型学习参考

泛型

1、简单介绍

所谓的泛型,就是不知道确定哪种数据类型的时候,加的一种占位符方式。

泛型和Object的区别是什么?最经典的一种场景使用方式:

List list = new ArrayList();
list.add("hello");
list.add(false);
list.add(0.22);
list.add(52);
list.add('a');
for (Object o : list) {
    // 输出没有任何问题
    System.out.println(o);
    // 但是针对于某种类型,我们还是得自己来进行处理
}

上面这种模式是非常经典的一种使用场景,但是缺点就是说:集合中的元素类型太杂了,放进去的时候方便,但是取出来的时候不方便。

所以为了操作的便利性,将集合中的数据规定性一致的。所以需要来添加一个约束。而泛型就适用于这种场景。

当我们指定了泛型的类型之后,那么再放入数据的时候,只让放的数据是泛型指定的类型的,如下:

List<String> list = new ArrayList<>();
list.add("helloworld");
list.add("world");
list.add("hello");
for (String s : list) {
    System.out.println(s);
}

这个只是介绍下泛型的好处。在使用的时候,指定泛型类型,指定完成之后,那么这个类型就确定好了。

泛型类,这个可以参考着ArrayList来操作:

// 泛型在里面的使用方式
public class ArrayList<E>{
    // set方法。
    public E get(int index) {
        rangeCheck(index);

        return elementData(index);
    }
    public E set(int index, E element) {
        rangeCheck(index);

        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
    }
}

2、泛型方法

泛型方法参考

// 在方法声明的时候加上<T>即可。这里和类中的泛型是没有关系的。
public <T> T[] toArray(T[] a) {
    if (a.length < size)
        // Make a new array of a's runtime type, but my contents:
        return (T[]) Arrays.copyOf(elementData, size, a.getClass());
    System.arraycopy(elementData, 0, a, 0, size);
    if (a.length > size)
        a[size] = null;
    return a;
}

3、泛型类

最常见一种用法:

public class Response<T> {
    // 响应业务状态
    private Integer status;
    // 响应消息
    private String msg;
    // 响应中的数据
    private T data;
    // getter/setter方法
}    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值