没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Java 语言高级特性前言
java 知识是作为 Android 开发的语言基础,虽然现在我们已经推出了 kotlin,但是基于
以下原因我们还是需要好好牢牢掌握 java:
1)SDK 还是改成 java,kotlin 也需要编译成为 java 运行;
2)目前大量的第三方库和继承与前任的代码都是 java 所写的;
3)Java 语言应用不仅仅在 Android,就是在后台开发中也是一个最流行的语言;
4)大公司面试都要求我们有扎实的 Java 语言基础。所以,请大家不要轻视提高自己 Java
基础的机会,请大家认真学习,做好笔记,争取取得更大的进步。
Java 中的泛型
为什么我们需要泛型?
通过两段代码我们就可以知道为何我们需要泛型
实际开发中,经常有数值类型求和的需求,例如实现 int 类型的加法, 有时
候还需要实现 long 类型的求和, 如果还需要 double 类型的求和,需要重新在重
载一个输入是 double 类型的 add 方法。
定义了一个 List 类型的集合,先向其中加入了两个字符串类型的值,随后加
入一个 Integer 类型的值。这是完全允许的,因为此时 list 默认的类型为 Object
类型。在之后的循环中,由于忘记了之前在 list 中也加入了 Integer 类型的值或
其他编码原因,很容易出现类似于//1 中的错误。因为编译阶段正常,而运行时
会出现“java.lang.ClassCastException”异常。因此,导致此类错误编码过程中不易
发现。
在如上的编码过程中,我们发现主要存在两个问题:
1.当我们将一个对象放入集合中,集合不会记住此对象的类型,当再次从集
合中取出此对象时,改对象的编译类型变成了 Object 类型,但其运行时类型任
然为其本身类型。
2.因此,//1 处取出集合元素时需要人为的强制类型转化到具体的目标类型,
且很容易出现“java.lang.ClassCastException”异常。
所以泛型的好处就是:
适用于多种数据类型执行相同的代码
泛型中的类型在使用时指定,不需要强制类型转换
泛型类和泛型接口
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,
然后调用此方法时传递实参。那么参数化类型怎么理解呢?
顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参
数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时
传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定
的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的
数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被
称为泛型类、泛型接口、泛型方法。
引入一个类型变量 T(其他大写字母都可以,不过常用的就是 T,E,K,V
等等),并且用<>括起来,并放在类名的后面。泛型类是允许有多个类型变量的。
泛型接口与泛型类的定义基本相同。
而实现泛型接口的类,有两种实现方法:
1、未传入泛型实参时:
在 new 出类的实例时,需要指定具体类型:
2、传入泛型实参
在 new 出类的实例时,和普通的类没区别。
泛型方法
泛型方法,是在调用方法的时候指明泛型的具体类型 ,泛型方法可以在任
何地方和任何场景中使用,包括普通类和泛型类。注意泛型类中定义的普通方法
和泛型方法的区别。
普通方法:
剩余10页未读,继续阅读
石悦
- 粉丝: 11
- 资源: 285
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0