当前位置:网站首页>十四、Kotlin进阶学习:一、内联函数 inline;二、泛型;三、泛型约束;四、子类与子类型;
十四、Kotlin进阶学习:一、内联函数 inline;二、泛型;三、泛型约束;四、子类与子类型;
2022-07-30 05:43:00 【¥伊人独醉】
一、内联函数 inline;
1、每次lambda表达式执行时都会编译成一个匿名类,每次调用都会产生一个新的实例,浪费很多内存空间,使用关键字“inline”可以减少编译次数,只产生一个实例。使用inline修饰的高阶函数就是一个内联函数。
【案例】


日志:

2、禁用内联函数
场景:在内联函数中,调用了内联函数作为另一个函数的入参,而另一个函数没有将lambda表达式作为内联的函数。
其中一个是内联函数,另一个不是内联函数,而内联函数调用了非内联函数。会出现什么情况?
【案例】

日志:
![]()
二、泛型;
在kotlin中如何编写泛型?
集合中通常会使用泛型,是一种约定,确保类型是安全的。
【案例】

MyOperator.kt

MainActivity.kt

日志:

三、泛型约束;
泛型给类型提供了更多的可能性,如果某某泛型只限于某某操作,就需要对这个泛型进行约束。例如计算类型只能是数值,可以是Int、Long、Double但是不能是String或者其他。这时就需要对泛型参数进行约束,保证程序正常运行。
【案例】 对一个集合进行求和
也就是这个集合内的元素类型只能是数值类型。

参考代码:


日志:

【案例】泛型约束是多个




【案例】


日志:

【案例】多个泛型约束如何表达?
项目结构:

IUsb.kt

A.kt

B.kt

MainActivity.kt

日志:
![]()
四、子类与子类型;
(1)通常B类继承A类,B就是A的子类。他们两者是一种继承关系,因为父类A,子类B。(子类)
(2)在需要使用到A类变量时,可以使用B类变量来替代,B就是A的子类型,表达的不一定是继承关系,而一定包含了替代关系。(子类型)
(3)子类一定是父类的子类型。两者构成了子类型关系,但是不一定就是继承关系。继承关系必然产生一个子类型关系。
【案例】

Animal.kt

Dog.kt

MainActivity.kt

日志:

边栏推荐
- mysql删除表中重复数据,(只保留一行)
- MySQL window function
- The most powerful and most commonly used SQL statements in history
- MySQL achievement method 】 【 5 words, single table SQL queries
- 【SQL】first_value 应用场景 - 首单 or 复购
- nodejs PM2监控及报警邮件发送(二)
- 国内数字藏品交易平台开发市场会开放二级市场吗
- Obtain geographic location and coordinates according to ip address (offline method)
- npm安装和npm安装——保存
- Flink PostgreSQL CDC配置和常见问题
猜你喜欢
![[PASECA2019]honey_shop](/img/8f/7161a63dab10dc02fef1fea075401a.png)
[PASECA2019]honey_shop
awd --waf deployment

标准输入输出流(System.in,System.out)

MYSQL一站式学习,看完即学完
![CTFSHOW command execution [web29-web124] unfinished to be continued](/img/89/786fbe65af4c9f269530bf2d08e1a0.png)
CTFSHOW command execution [web29-web124] unfinished to be continued

C#利用开源NPlot实现K线图(蜡烛图)

SQL Server database generation and execution of SQL scripts

uni-app: about custom components, easycom specs, uni_modules, etc.
Misc of CTF-Memory Analysis (Volatility)

mysql delete duplicate data in the table, (retain only one row)
随机推荐
冒泡排序、选择排序、插入排序、快速排序
c#下Web3合约空投、转账调用代码
Bypassing the file upload vulnerability
Understand JDBC in one article
Remember a Mailpress plugin RCE vulnerability recurrence
Awd summary
Arthas command parsing (watch/tt/sc)
POI工具类
Common exception analysis of Redis client
Using custom annotations, statistical method execution time
"MySQL Advanced Chapter" four, the storage structure of the index
mysql删除表中重复数据,(只保留一行)
Powerhouse Cup Preliminary WP
Request请求体重新封装,解决请求体只能获取一次的问题
Thread state of five
MySQL 索引优化及失效场景
Servlet基本原理与常见API方法的应用
网上说的挖矿究竟是什么? 挖矿系统开发详解介绍
Student management system
Redis 客户端常见异常分析