【发布时间】:2021-03-03 08:58:41
【问题描述】:
在 java 中,当我有一个 Class 实例时,我有一个返回 Method 的 getMethod,它非常易于使用。 正如我所见,Kotlin 让生活变得更加艰难,因为这种方法不存在。除了将 KClass 转换为 Class 然后像在 Java 中一样使用它之外,有没有一种很好的方法来获得特定的方法?
【问题讨论】:
-
是否需要通过字符串名称获取方法?否则,您可以使用
::methodName。 -
否则,您可以使用
class.members.single { it.name == "theFunctionName" }获取KCallable -
是的,我需要姓名。顺便说一句,当我尝试以下操作时, ::methodName 不起作用: val str:String ="dsasa" var kclass : KClass
= str::class str.toUpperCase() -
我没有完全按照您的尝试进行操作,可能是因为注释格式,但如果您也想询问,也可以将其编辑到问题中。
-
@Tenfour04,我都明白了!谢谢!你应该写一个正式的答案,这样我就可以奖励你:) 你是 lambda 表达式的大师。只有两个小而重要的问题,1. 这种语法是否将实例绑定到函数? 2.成员集合中是否包含companion对象的方法?
标签: java android class kotlin reflection