首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java访问Kotlin扩展函数

从Java访问Kotlin扩展函数
EN

Stack Overflow用户
提问于 2020-11-26 18:46:33
回答 1查看 72关注 0票数 0

可以从Java代码访问扩展函数吗?

我在Kotlin文件中定义了扩展函数。

代码语言:javascript
复制
package com.test.extensions

import com.test.model.MyModel

/**
 *
 */
public fun MyModel.bar(): Int {
    return this.name.length()
}

其中MyModel是(生成的) java类。现在,我想在我的普通java代码中访问它:

代码语言:javascript
复制
MyModel model = new MyModel();
model.bar();

然而,这是行不通的。IDE无法识别bar()方法,编译失败。

与kotlin的静态函数一起使用是可行的:

代码语言:javascript
复制
public fun bar(): Int {
   return 2*2
}

通过使用导入com.test.extensions.ExtensionsPackage,使我的集成开发环境看起来配置正确。

我从kotlin文档中搜索了整个Java-interop文件,也用谷歌搜索了很多次,但我没有找到它。

我做错了什么?这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 19:07:15

也许是这样的:

代码语言:javascript
复制
// 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“,作为静态方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65020484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档