kotlin中的伴侣对象和java中的替换有什么用处

companion object { var funAfterPermission: (() -> Unit)? = null } 

在上面的代码片段中,伴侣对象的用法是什么?线的含义是什么?

  var funAfterPermission: (() -> Unit)? = null 

你的行意味着有一个名为funAfterPermission的var,它接受一个函数( 高阶函数 )作为参数,它在java中返回相当于void的地方。它加入了一个没有参数的方法。 var本身默认为null,可以为null。

 var funAfterPermission: (() -> Unit)? = null 

例:

 fun test(): (() -> Unit)? { println("test") return null } funAfterPermission = test() 

它像几种语言的评估 。 它调用另一个函数的东西,但没有分配任何东西,因为它返回单位。

伴随对象用于从java中获取“静态”行为。 你可以使用YourClass.funAfterPermission = ....来访问你的funAfterPermission

companion object是Java中的单身人士的替代品。

() -> Unit代表一个委托。 它可以分为()Unit()表示委托人不应该接受任何参数。 Unit意味着委托没有返回(与Java中的void相同)。 合并它们意味着它是一个委托,不需要任何参数,不返回任何东西。

(() -> Unit)? 意味着委托可以为空。

例如, (Int, String) -> String意味着它要求第一个参数是Int ,第二个参数是String ,它返回String

 class Foo { var greeting: () -> Unit = this::helloWorld fun helloWorld() { } fun hello() { greeting() } } 

委托由语法分配,可以像普通函数一样调用。