【发布时间】:2015-04-02 09:20:04
【问题描述】:
是否可以从 Java 代码访问扩展函数?
我在 Kotlin 文件中定义了扩展函数。
package com.test.extensions
import com.test.model.MyModel
/**
*
*/
public fun MyModel.bar(): Int {
return this.name.length()
}
MyModel 是一个(生成的)java 类。
现在,我想在我的普通 java 代码中访问它:
MyModel model = new MyModel();
model.bar();
但是,这不起作用。 IDE 无法识别bar() 方法,编译失败。
使用来自 kotlin 的静态函数起作用的是:
public fun bar(): Int {
return 2*2
}
通过使用import com.test.extensions.ExtensionsPackage,我的 IDE 似乎配置正确。
我从 kotlin 文档中搜索了整个 Java-interop 文件,也搜索了很多,但我找不到。
我做错了什么?这甚至可能吗?
【问题讨论】:
-
请详细说明不起作用?它会编译,抛出异常还是什么?你也有
import package com.test.extensions.MyModel? -
@meskobalazs 查看我编辑的答案。
-
@meskobalazs,我什至无法导入它。我只能导入
com.test.extensions.ExtensionsPackage
标签: java kotlin extension-function