Java 我可以从Groovy调用Scala动态函数吗?
我正在用Scala编写Gradle插件 为了允许我通过Gradle DSL配置插件和相关任务,我需要能够动态调用方法(即实际上不存在的方法)。如果我在Groovy中编写插件,我会使用Java 我可以从Groovy调用Scala动态函数吗?,java,scala,gradle,groovy,jvm,Java,Scala,Gradle,Groovy,Jvm,我正在用Scala编写Gradle插件 为了允许我通过Gradle DSL配置插件和相关任务,我需要能够动态调用方法(即实际上不存在的方法)。如果我在Groovy中编写插件,我会使用methodMissing或propertyMissing,如上所述 在Scala中,我可以使用动态调用函数。这在从Scala代码调用函数时有效,但我似乎找不到从Groovy调用这些动态函数的方法(例如,当Scala插件作为另一个Gradle项目的一部分使用时) 可以从Groovy使用Scala的动态成员查找吗?还是
methodMissing
或propertyMissing
,如上所述
在Scala中,我可以使用动态调用函数。这在从Scala代码调用函数时有效,但我似乎找不到从Groovy调用这些动态函数的方法(例如,当Scala插件作为另一个Gradle项目的一部分使用时)
可以从Groovy使用Scala的动态成员查找吗?还是这是一条死胡同?刚刚找到了我问题的答案。在Scala中,我需要实现与编写Groovy类并让Scala类扩展GroovyObjectSupport(Gradle集成所需)时相同的
方法Missing
和propertyMissing
函数
如果其他任何人尝试执行类似的操作,下面是您需要在Scala中实现的函数签名:
class Foo extends GroovyObjectSupport {
def methodMissing(m: String, arg: Any): Any = ???
def propertyMissing(p: String): Any = ???
def propertyMissing(p: String, v: Any): Any = ???
}