Почему конкретный метод в интерфейсе должен быть реализован, если интерфейс написан на kotlin - PullRequest
2 голосов
/ 07 февраля 2020

Я написал интерфейс в kotlin с конкретным методом, и класс, который его реализует, просит переопределить его. Если я пишу тот же интерфейс в java, он работает нормально. Могу ли я знать, что с ним не так?

В kotlin

interface BottomSheet {

companion object{

    val BOTTOMSHEET_ADAPTER:String="BOTTOMSHEET_ADAPTER"
    val FILTER_ADAPTER:String="FILTER_ADAPTER"

}

fun getBottomSheetAdapterInstance(context: Context?): BottomSheetAdapter? {
    return BottomSheetAdapter(context)
}

}

в Java

public interface BottomSheetJava {

default BottomSheetAdapter getBottomSheetAdapterInstance(Context context){
    return new BottomSheetAdapter(context);
}

}

в Gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}

1 Ответ

2 голосов
/ 07 февраля 2020

Я понял, нам нужно добавить

kotlinOptions {jvmTarget = "1.8" freeCompilerArgs = ['-Xjvm-default = enable']

}

и отметьте конкретный метод как

@ JvmDefault

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...