可以从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
}通过使用导入com.test.extensions.ExtensionsPackage,使我的集成开发环境看起来配置正确。
我从kotlin文档中搜索了整个Java-interop文件,也用谷歌搜索了很多次,但我没有找到它。
我做错了什么?这有可能吗?
发布于 2020-11-26 19:07:15
也许是这样的:
// CallExtensionFunction.java
package com.example.groundup;
public class CallExtensionFunction {
public static void main(String[] args) {
MyModel myModel = new MyModel();
int bar = MyModelKt.bar(myModel);
System.out.println(bar);
}
}
// MyModell.kt
package com.example.groundup
fun MyModel.bar(): Int {
return this.name.length
}
class MyModel() {
val name = "Hugo"
}扩展函数在相应的单例中提供,后缀为"Kt“,作为静态方法。
https://stackoverflow.com/questions/65020484
复制相似问题