似乎我无法在Kotlin中使用对象的方法引用。此功能存在于Java中。
例如在Java中,如果我循环遍历字符串以将每个字符附加到编写器:
string.forEach(writer::append);
但在Kotlin中使用相同的语法不起作用,因为:
答案 0 :(得分:20)
目前,Kotlin仅支持对顶级和本地函数以及类成员的引用,而不支持单个实例。请参阅文档here。
所以,你可以说Writer::append
并获得一个函数Writer.(Char) -> Writer
,但是获取writer
个实例并说writer::append
来获取函数(Char) -> Writer
不是目前支持。
答案 1 :(得分:0)
从Kotlin 1.1 set
开始是一个非常有效的bound callable reference。
但是,您仍然无法编写writer::append
,因为string.forEach(writer::append)
方法返回一个Writer#append
实例,并且Writer
需要一个返回forEach
的函数。
答案 2 :(得分:0)
我正在使用Kotlin 1.3,并且在引用Java方法时遇到了非常相似的错误。如this comment中所述,制作lambda并将其传递给forEach
方法是一个不错的选择。
key.forEach { writter.append(it) }