2016-08-08 51 views
0

例子: 在C代碼就可以調用的彙編代碼部分,如:Kotlin集成在Java代碼中?

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

是Java文件(* .java)文件這樣的代碼集成可能科特林代碼?

(我不是在談論Java中的JNI或C/C++!) 我想用Kotlin語言擴展已經存在的(AndroidStudio-)Java源代碼。

//.. 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; 
} 

} 

回答

5

Java不提供將Kotlin或任何其他語言的代碼片段包含到Java文件中的任何語法。但是,這不是完成您的任務所必需的。如果要定義一個新的方法

fun MyAlreadyExistingJavaClass() = MyAlreadyExistingJavaClass(0) 

,而不是一個構造函數,你可以使用extension functions:你可以簡單地定義你需要在一個單獨的文件科特林工廠函數的構造。

0

我是一個Groovy開發者,而不是一個科特林開發者,但它看起來像科特林provides a scripting API。 Groovy,JavaScript和JRuby都可以使用標準的Java ScriptEngine API從Java類中調用。你會想要類似這樣的內容來近似Kotlin在Java類中的內聯。我認爲它是近似的,因爲它不會像該程序集示例那樣直接運行,而是會通過符合ScriptEngine的Kotlin實現進行傳遞。

+1

無論誰投我的評論,你爲什麼不提供更好的答覆。你應該知道,Java不能像這樣排列Kotlin代碼,並期望它能夠編譯,並且這是獲得Java編譯器支持的最接近的方法。 –