【对比Java学Kotlin】类型别名
当我们觉得一个类型过长导致书写不变时,我们可以声明一个新的更短的名称替代之,从而方便使用,这就是类型别名。
Java 不支持类型别名。
Kotlin 支持类型别名。
对集合类的类型别名
typealias List = ArrayList<ReadWriteProperty<User, String>>
typealias GenericList<R, T> = ArrayList<ReadWriteProperty<in R, T>>
对方法的类型别名
typealias MyHandler = (Int, String, Any) -> Unit
typealias Predicate<T> = (T) -> Boolean
对内部类的类型别名
class Outer {inner class Inner
}typealias In = Outer.Inner
实现原理
类型别名其实并没有引入新的类型,而是 Kotlin 编译器在底层完成了类型替换,某种程度上跟内联类相似。Kotlin 其实内置了一些类型别名,比如 Predicate<T>
,在我们在代码中使用 Predicate<T>
时编译器会在合适的时候将其替换成 (T) -> Boolean
:
typealias Predicate<T> = (T) -> Booleanfun foo(p: Predicate<Int>) = p(42)fun main() {val f: (Int) -> Boolean = { it > 0 }println(foo(f)) // prints "true"val p: Predicate<Int> = { it > 0 }println(listOf(1, -2).filter(p)) // prints "[1]"
}
【对比Java学Kotlin】类型别名相关推荐
- 【对比Java学Kotlin】协程简史
文章目录 一.概念释义 1.1 协程定义 1.2 与线程的关系 1.3 协程简史 二.种类划分 2.1 按调用栈分类 2.2 按调度方式分类 三.异步编程 3.1 多线程 3.2 回调 3.3 Pro ...
- 【对比Java学Kotlin】object 关键字
两种用法 Kotlin 的 object 关键字有两种用法,一个是作为右值表达式的前缀,一个是作为类的前缀修饰符. object 表达式 object 表达式一般用于对现有类进行稍微修改.因为是临时使 ...
- 从Java到Kotlin(三)
本篇文章主要对比Java跟Kotlin中的类和接口的写法. 目录 一.类的声明 二.构造函数 三.函数的参数 四.创建类的实例 五.数据类 六.枚举类 七.属性 八.内部类 九.可见性修饰符 十.继承 ...
- 建造者模式(Java与Kotlin版)
前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比J ...
- Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- Java和kotlin的对比
0.序言 在java的既有能力上学习kotlin,可快捷理解新语言特性.总体而言kotlin的语言设计思想是悲观谨慎,相对java的就比较乐观开放. 1.数据类型 Kotlin类型 位宽度 Java类 ...
- 手把手教你学Kotlin (2):task1-6 函数,Java to Kotlin Convert,(持续更新中)
文章目录 task1:函数 task2:Java to Kotlin Convert task3:Named arguments task1:函数 先看任务介绍: 这个任务的意思是修改代码,让函数返回 ...
- java和python的比较-java学习笔记(与python对比来学)
写在前头 自己之前一直是从事python的,因为部分业务要求需要进行Java的学习,顺道记录一点笔记. 不同在于Java是偏向编译性的语言,python是解释性语言(下面conner只针对java与p ...
- 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
文章目录 I . 函数类型 II . 带参数名的参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 的函数类型 VII . 函数类型实例化 ...
- 类的别名java,类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:typeAliases typeAlias ali...
类型别名是为 Java 类型设置一个短的名字. 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余.例如: 当这样配置时,Blog 可以用在任何使用 domain.blog.Blog ...
最新文章
- 【.NET开发之美】如何提高.NET DataMap中的加载速度
- PMSM的FOC 矢量控制算法调试流程,新手上手流程
- boost::math::policies用法的测试程序
- ORM系列之Entity FrameWork详解
- MySQL查看和修改数据库存储目录
- Scikit-Learn库概述
- Maven-Eclipse使用maven创建HelloWorld Java项目,maven常用的命令解析
- 2022爱分析・汽车行业数字化实践报告
- 淘宝小程序开发demo下载
- eclipse安装(中文)语言包插件
- 使用SnakeYAML读取yaml配置文件
- PS视频降噪去噪点插件;DeNoise英文可选 支持CS6- cc2019
- Eclipse 启动提示java虚拟机启动失败,“Failed to create the Java Virtual Machine”-------解决方法
- Selina 爱我的每个人
- 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
- VS2019下编译与配置GSL2.7【Release x64版】
- Python爬取《扫黑风暴》腾讯视频弹幕
- python sort多条件排序
- 薅羊毛第三十八次更新
- Flowable初始化失败 Table ‘xxxx‘ already exist
热门文章
- 鹏保宝 v7.1.0 官方版
- Todd.log - a place to keep my thoughts on programming
- window office
- 【车间调度】基于matlab改进的帝国企鹅算法求解车间调度问题【含Matlab源码 2041期】
- python histogram bins_5种方法教你用Python玩转histogram直方图
- 我自己常用的几个JS深浅拷贝的方法
- 2020-08-05
- iPhone中使用ShareKit一键分享到Facebook,Twitter等多平台
- 沃顿商学院自我管理课——完美融合
- 老婆问我什么是同步、异步、阻塞、非阻塞!