初始java-“泛型”

本文介绍了Java中泛型的概念和使用,旨在解决在编程时频繁进行类型转换的问题。通过泛型,我们可以创建更为安全且类型明确的顺序表。泛型允许在类、接口和方法中定义类型参数,使得在编译时期就能进行类型检查,减少运行时错误。在实例化泛型类时指定具体类型,如`SeqList`,即可确保添加和获取的元素始终为指定类型,避免了强制类型转换。
摘要由CSDN通过智能技术生成

在学习集合之前,我们还是需要去学习一些预备的知识,“泛型”和“包装类”。这篇文章先把“泛型”进行总结一下。

1、引入:

问题的提出:
在学习java的时候我们都有认识到顺序表,很多人都是以int类型的元素进行基础学习的,其实对于其他的基本数据类型也是同理,那如果我们想要存储的是一些自定义类型的,我们应该怎么解决?

问题的解决:
我们都知道在学习多态时,父类的引用可以指向子类的对象。而Object是java所有类的父类,那我们是不是就可以把所有的顺序表类型都写成Object类型?

public class SeqList {
    private Object[] array;
    private int size;

    public void add(Object o) {
        array[size] = o;
        size++;
    }

    public Object get(int index) {
        return array[index];
    }
}

这样,我们是不是就可以随意的去存储任意类型的数据了?这样岂不是太简单了?

下面我们来看一下main方法中的代码:

public static void main(String[] args) {
        SeqList seqList = new SeqList();
        seqList.add("aaa");
        seqList.add("bbb");
        //调用add的时候相当于向上转型,而调用get返回的是Object,这里又需要向下转型
        String str = (String)seqList.get(0);
    }

我们在这里虽然使用Object是可以解决一些问题的,但是会经常使用向下转型,造成了很多的麻烦。所以这里我们就可以引入我们的“泛型”来解决问题。

2、泛型的定义:

//这里的E可以随便写为任意表示,常用的有E、T、KEY、VALUE......
public class SeqList<E> {
//array的类型可以是E[]
    private E[] array;
    private int size;

//泛型方法add的形参也为E
    public void add(E o) {
        array[size] = o;
        size++;
    }

//泛型方法get的返回值也为E
    public E get(int index) {
        return array[index];
    }
}

(1)<>其实是泛型的一种标志。
(2)< E >是一个泛型参数,相当于是形参,需要在该类型实例化时,确定实参。所以array到底是什么类型,只有在实例化的时候才能确定。
(3)泛型是作用于代码编译时期的一种机制,代码在运行期间是没有这个概念的。

3、泛型的使用:

//实例化的时候就可以去写具体的类型
SeqList<String> seqList = new SeqList<>();
//在接下来的过程中我们就可以直接去传入String类型的数据
        seqList.add("aaa");
        seqList.add("bbb");

通过上面的代码我们可以看到,泛型在使用的过程中,尖括号内部才是真正的类型,也就是上面的E的最后的类型,我们也可以去自定义类型在这里使用。

SeqList<Animal> animals = new SeqList<>();
        animals.add(new Animal());
        animals.add(new Animal());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值