如果使用Any()::toString
创建了KCallable
,那么当它稍后被引用时,您不需要传递该实例(使用call
时)。Kotlin检查功能是否需要实例参数
虽然如果它是使用Any::toString
(不是Any
的实例)创建的,但它需要传递一个Any
实例。
所以我的问题是如何轻松地找出我是否需要传递该实例参数,并且此参数是必需的?
我发现了一个办法做到这一点:
callable.parameters[0].kind == KParameter.Kind.INSTANCE
,但它是不是很漂亮,我不知道是否有解决这个更简单的或推荐的方式。谢谢!
所以当'instanceParameter'返回null时,这意味着我不需要传递可调用的所有者,对吧? – Mibac
差不多。还有扩展函数:'fun Any.foo()= 1':它将有'instanceParameter == null',所以你可能也想检查'extensionReceiverParameter'。 – hotkey