Пример. В C-коде можно вызвать части кода ассемблера, например:
int main() { //... stuff __asm { lea ebx, hal mov ecx, [ebx]hal.same_name ; mov esi, [ebx].weasel ; } // .. further stuff return 0; }
Возможна ли такая интеграция кода для кода Котлина в файлах Java (* .java)?
(Я не говорю о JNI или C / C ++ в Java!) Я хотел бы расширить уже существующий (AndroidStudio-) Java-исходный код с языком Kotlin.
//.. 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 не предоставляет никакого синтаксиса для включения фрагментов кода в Kotlin или любого другого языка в файл Java. Однако это не обязательно для выполнения вашей задачи. Вы можете просто определить требуемый конструктор в качестве заводской функции в отдельном файле Kotlin:
fun MyAlreadyExistingJavaClass() = MyAlreadyExistingJavaClass(0)
Если вы хотите определить новый метод, а не конструктор, вы можете использовать функции расширения .
Я разработчик Groovy, а не разработчик Kotlin, но похоже, что Kotlin предоставляет скриптовый API. Groovy, JavaScript и JRuby могут быть вызваны из класса Java с использованием стандартного API Java ScriptEngine. Вы хотели бы, чтобы что-то подобное приблизилось к встраиванию Kotlin в классе Java. Я говорю приблизительный, потому что он не будет запускаться напрямую, как пример сборки, но будет передан через реализацию сценария Kotlin, совместимую с ScriptEngine.