一起来学Java——初始泛型

Java基础知识——泛型初认识

引入泛型

对于Java中的那些已经封装好的类来说,肯定是不可能就只针对一个类型来的,比如说链表类,应该对所有的类型int,String,boolen都可以使用。但是我们是如何来解决可以对任意的类型都适用呢?就是用了我们今天要介绍的知识:泛型。

泛型的格式

对于类:

在类名后面加上一个<>,<>里面是类型变量。类型变量最好是大写的,如T,E等

image-20220112145019010

泛型的原理

可能大家会疑惑,泛型在Java中是怎么实现的呀。

泛型的编译机制

泛型是在编译时期的事情,利用了擦除机制,也就是到了运行期间,根本就没有泛型这个东西了。那些类型都变成object了

泛型的意义

  1. 自动对类型进行检查

要是指定了泛型,就只能指定同一类型的变量

  1. 自动对类型进行强制类型转换

因为其实在内部是Object的,使用了泛型就自动的进行了类型转换

关于Object[]和数组

这部分内容参考了这篇博客[Object强制类型转换]([关于Object] 强制类型转换的思考 - 简书 (jianshu.com))

我们知道,在泛型的内部其实就是转换成了Object[]类型,但是在碰到数组的时候要千万注意一下。

在Java中,数组是一个非常特殊的存在,因为数组在Java是一个类。所以,像int[],Object[],String[]都是类。

这些类全部是Object的子类。

所以,不要认为Object[]和int[]是父子关系,它们是平级的!

并且,int[]类里面就只可以存放int类型

但是,Object[]类因为是由Object组成的,所以可以存放其他类型的类

image-20220112155249368

如果将Object[]强制类型转换成Coffee[]类会怎么样?

image-20220112155445455

结果会抛出异常——Object不可以强制类型转换成Coffee类型

所以,我们千万要注意:

  1. 不可以将别的类型数组赋给Object数组
  2. 不可以将Object类型数组强制转化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值