参考资料

[译]有关Kotlin类型别名(typealias)你需要知道的一切_Mikyou的专栏-CSDN博客

typealias

typealias 只能在顶级,而不能在类里面定义

给一个类型命名 Compare

  1. typealias Compare = (num1:Int,num2:Int)->Boolean

然后就可以将ExplainReasonCallback直接作为一个类型使用

  1. typealias Compare = (num1:Int,num2:Int)->Boolean
  2. fun min(list:Array<Int>,compare:Compare):Int{
  3. if (list.isEmpty())return -1
  4. var num = list[0]
  5. list.forEach {
  6. if (compare(num,it)){
  7. num = it
  8. }
  9. }
  10. return num
  11. }
  12. fun main() {
  13. val list = arrayOf(8,6,1,9,2)
  14. val minNum = min(list){num1, num2 ->
  15. num1 > num2
  16. }
  17. println(minNum)
  18. }

输出结果:1

上边的min方法的代码相当于:

  1. fun min(list:Array<Int>,compare:(num1:Int,num2:Int)->Boolean):Int{
  2. ...
  3. }

Import as

实际上import as 和 typealias基本是一个东西,但是配合理解可以更简单

  1. import android.support.v4.app.NotificationCompat.Builder as NotificationBuilder

注:如果学过Python大概会觉得很亲切了,在类中的应用可以用NotificationBuilder替代android.support.v4.app.NotificationCompat.Builder

  • 更有效的用处
  1. import com.example.app.model.User
  2. import com.example.app.database.User as DatabaseUser

当导入的两个类同名时,写代码时候往往很难区分,这时候就很好用了。

当然我们也可以改成:

  1. import com.example.app.model.User
  2. typealias DatabaseUser = com.example.app.database.User

什么时候只能用import as或是另一个

Kotlin关键字 typealias(类型别名)和Import as - 图1