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() } }
委托由语法分配,可以像普通函数一样调用。