有可能从Java代码中访问扩展函数吗?
我在静态编程语言文件中定义了扩展函数。
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()方法,编译失败。
work使用kotlin的静态函数:
public fun bar(): Int {
return 2*2
}
通过使用导入com.test.extensions.ExtensionsPackage我的IDE似乎配置正确。
我从kotlin文档中搜索了整个Java-interop文件,也搜索了很多,但找不到。
我做错了什么?这可能吗?
也许像这样:
// 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”作为静态方法。
到目前为止,我一直在使用这个静态编程语言密封类: 这在我的Kotlin和Java代码中都非常有效。今天我尝试将这个类改为使用对象(建议减少额外的类实例化): 我可以在我的其他静态编程语言文件中引用这个简单的版本,但是我现在正在努力在我的Java文件中使用它。 当我尝试在Java中引用时,我尝试了以下两种回弹编译错误: 有人知道我现在如何在Java中引用该实例吗?
我在Kotlin文件中定义了扩展函数。 其中是(生成的)java类。现在,我想用正常的java代码访问它: 然而,那是行不通的。IDE将无法识别方法,编译失败。
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
动机: 在我们的Android项目中,我们有许多验证,比如
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
假设我想要一个类型变量T,它扩展了某个类并实现了一个接口。类似于: Kotlin中的语法是什么?