当我们觉得一个类型过长导致书写不变时,我们可以声明一个新的更短的名称替代之,从而方便使用,这就是类型别名。

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】类型别名相关推荐

  1. 【对比Java学Kotlin】协程简史

    文章目录 一.概念释义 1.1 协程定义 1.2 与线程的关系 1.3 协程简史 二.种类划分 2.1 按调用栈分类 2.2 按调度方式分类 三.异步编程 3.1 多线程 3.2 回调 3.3 Pro ...

  2. 【对比Java学Kotlin】object 关键字

    两种用法 Kotlin 的 object 关键字有两种用法,一个是作为右值表达式的前缀,一个是作为类的前缀修饰符. object 表达式 object 表达式一般用于对现有类进行稍微修改.因为是临时使 ...

  3. 从Java到Kotlin(三)

    本篇文章主要对比Java跟Kotlin中的类和接口的写法. 目录 一.类的声明 二.构造函数 三.函数的参数 四.创建类的实例 五.数据类 六.枚举类 七.属性 八.内部类 九.可见性修饰符 十.继承 ...

  4. 建造者模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比J ...

  5. Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  6. Java和kotlin的对比

    0.序言 在java的既有能力上学习kotlin,可快捷理解新语言特性.总体而言kotlin的语言设计思想是悲观谨慎,相对java的就比较乐观开放. 1.数据类型 Kotlin类型 位宽度 Java类 ...

  7. 手把手教你学Kotlin (2):task1-6 函数,Java to Kotlin Convert,(持续更新中)

    文章目录 task1:函数 task2:Java to Kotlin Convert task3:Named arguments task1:函数 先看任务介绍: 这个任务的意思是修改代码,让函数返回 ...

  8. java和python的比较-java学习笔记(与python对比来学)

    写在前头 自己之前一直是从事python的,因为部分业务要求需要进行Java的学习,顺道记录一点笔记. 不同在于Java是偏向编译性的语言,python是解释性语言(下面conner只针对java与p ...

  9. 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

    文章目录 I . 函数类型 II . 带参数名的参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 的函数类型 VII . 函数类型实例化 ...

  10. 类的别名java,类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:typeAliases typeAlias ali...

    类型别名是为 Java 类型设置一个短的名字. 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余.例如: 当这样配置时,Blog 可以用在任何使用 domain.blog.Blog ...

最新文章

  1. 【.NET开发之美】如何提高.NET DataMap中的加载速度
  2. PMSM的FOC 矢量控制算法调试流程,新手上手流程
  3. boost::math::policies用法的测试程序
  4. ORM系列之Entity FrameWork详解
  5. MySQL查看和修改数据库存储目录
  6. Scikit-Learn库概述
  7. Maven-Eclipse使用maven创建HelloWorld Java项目,maven常用的命令解析
  8. 2022爱分析・汽车行业数字化实践报告
  9. 淘宝小程序开发demo下载
  10. eclipse安装(中文)语言包插件
  11. 使用SnakeYAML读取yaml配置文件
  12. PS视频降噪去噪点插件;DeNoise英文可选 支持CS6- cc2019
  13. Eclipse 启动提示java虚拟机启动失败,“Failed to create the Java Virtual Machine”-------解决方法
  14. Selina 爱我的每个人
  15. 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
  16. VS2019下编译与配置GSL2.7【Release x64版】
  17. Python爬取《扫黑风暴》腾讯视频弹幕
  18. python sort多条件排序
  19. 薅羊毛第三十八次更新
  20. Flowable初始化失败 Table ‘xxxx‘ already exist

热门文章

  1. 鹏保宝 v7.1.0 官方版
  2. Todd.log - a place to keep my thoughts on programming
  3. window office
  4. 【车间调度】基于matlab改进的帝国企鹅算法求解车间调度问题【含Matlab源码 2041期】
  5. python histogram bins_5种方法教你用Python玩转histogram直方图
  6. 我自己常用的几个JS深浅拷贝的方法
  7. 2020-08-05
  8. iPhone中使用ShareKit一键分享到Facebook,Twitter等多平台
  9. 沃顿商学院自我管理课——完美融合
  10. 老婆问我什么是同步、异步、阻塞、非阻塞!