【问题标题】:Kotlin integration in Java Code?Java代码中的Kotlin集成?
【发布时间】:2016-08-08 12:35:10
【问题描述】:

示例: 在 C 代码中可以调用部分汇编代码,例如:

int main()
{
   //... stuff
   __asm
   {
      lea ebx, hal
      mov ecx, [ebx]hal.same_name ;
      mov esi, [ebx].weasel       ;
   }
   // .. further stuff
   return 0;
}

Java (*.java) 文件中的 Kotlin 代码是否可以进行这种代码集成?

(我不是在谈论 Java 中的 JNI 或 C/C++!) 我想用 Kotlin 语言扩展已经存在的 (AndroidStudio-) Java-Source-Code。

//.. this is *.java file
public class MyAlreadyExistingJavaClass {

private int memberVar;

public MyAlreadyExistingJavaClass()
{

}

// this is Kotlin within *.java file
// extend this Java file with this constuctor in KOTLIN ?
// would make above default constructor unneccessary.
class MyAlreadyExistingJavaClass(number: Int = 0)
{
  memberVar = number;
}

}

【问题讨论】:

    标签: java android kotlin kotlin-android-extensions


    【解决方案1】:

    Java 不提供任何语法来将 Kotlin 或任何其他语言中的代码的 sn-ps 包含到 Java 文件中。但是,这不是完成任务所必需的。您可以在单独的 Kotlin 文件中简单地将所需的构造函数定义为工厂函数:

    fun MyAlreadyExistingJavaClass() = MyAlreadyExistingJavaClass(0)
    

    如果你想定义一个新的方法,而不是一个构造函数,你可以使用extension functions

    【讨论】:

      【解决方案2】:

      我是 Groovy 开发人员,不是 Kotlin 开发人员,但它看起来像 Kotlin provides a scripting API。 Groovy、JavaScript 和 JRuby 都可以使用标准 Java ScriptEngine API 从 Java 类中调用。你会想要类似的东西来近似 Java 类中的内联 Kotlin。我说近似是因为它不会像那个汇编示例那样直接运行,而是会通过符合 ScriptEngine 的 Kotlin 实现传递。

      【讨论】:

      • 谁对我的评论投了反对票,你为什么不提供更好的回应。你应该很清楚,Java 不能像这样内联 Kotlin 代码并期望它能够编译,这是最接近 Java 编译器支持的方法。
      猜你喜欢
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      相关资源
      最近更新 更多