Вызов функции из Kotlin файла в коде Java

Делаю проект(андроид приложение) и стало интересно, можно ли как-то вызвать функцию из Kotlin файла, в Java. Я имею следующий код на Java:

package com.example.a8888;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

import static com.example.a8888.SumKt.sum_a;

public class MainActivity extends AppCompatActivity {
    int result;
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textView);
        result = sum_a(5,3);
        textView.setText(result);

    }
}

И также функцию в Kotlin файле:

package com.example.a8888
fun sum_a(A:Int,B:Int): Int {
    var C:Int;
    C = A+B
    return C
}

И при компиляции выдает следующую ошибку:

error: cannot find symbol
import static com.example.a8888.SumKt.sum_a;
                               ^
  symbol:   class SumKt
  location: package com.example.a8888

Подскажите пожалуйста, как можно устранить эту ошибку,буду благодарен.


Ответы (2 шт):

Автор решения: Arty Morris

Как вариант вы забыли поставить знак ";"

fun sum_a(A:Int,B:Int): Int {
    var C:Int;
    C = A+B;
    return C;
}

И второе, textView.setText(result); выдаст ошибку, result это int. Поменяйте на

textView.setText(Integer.toString(result));
→ Ссылка
Автор решения: insolor

Если файл модуля на kotlin имеет имя SumKt.kt, то импортировать функцию из него нужно так (т.е. по сути при импорте к имени файла без учета расширения нужно добавить Kt):

import static com.company.a8888.SumKtKt.sum_a;

Либо переименовать файл просто в Sum.kt, тогда импорт как в вопросе будет работать.

См. Вызов кода Kotlin из Java, раздел "Функции уровня пакета (Package-Level Functions)"

→ Ссылка