为了账号安全,请及时绑定邮箱和手机立即绑定

Java核心技术--谈谈泛型

标签:
Java

泛型在实际开发和面试中都非常重要,所以我们今天来谈谈这个话题

1,什么是泛型

泛型的本质是为了参数化类型,通过泛型指定的不同类型来控制形参具体限制的类型。

举个例子!

我们要定义一个只能存放整数的集合,怎么写?

List list = new ArrayList();

这样对吗?其实不行,这样我们可以往list添加任务数据类型

所以这个时候,解决办法就是采用泛型,可以这么来写

List<Integer> list = new ArrayList<>();

通过参数化类型,就可以限制list可以添加的类型

2,泛型的特点,只对编译期间有效,在运行期间无效(泛型的擦除)

我们来看看,以下这两个集合是同个类型吗?

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

很明显,在编译期间,两个集合都很好控制了添加的数据类型。

但是,在运行期间,这个类型会被擦除。我们来做个试验就得到这个结论

public static void main(String[] args) {

    Listlist1 = new ArrayList<>();

    List list2 = new ArrayList<>();

    System.out.println(list1.getClass() == list2.getClass());

}

可以试试结果,我打包票,出来的结果是true

3,注意点

泛型的参数类型只能是引用类型,不能是基本数据类型,比如int

4,泛型的使用

4.1 泛型类

public class GenericTest {

    public static void main(String[] args) {

        GenericClassg1 = new GenericClass<();

        g1.setKey(1);

        System.out.println(g1.getKey());

    }

}

class GenericClass{

    private T key;

    public void setKey(T key){

        this.key = key;

    }

    public T getKey(){

        return this.key;

    }

}

4.2 泛型接口

interface GenericInterface{

    public T getNext();

}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消