【问题标题】:Why concrete method in interface must be implemented if the interface is written in kotlin为什么用kotlin写的接口一定要实现接口中的具体方法
【发布时间】:2020-05-23 06:26:58
【问题描述】:

我在 kotlin 中编写了一个带有具体方法的接口,实现它的类询问是否覆盖它。如果我在 java 中编写相同的接口,它工作正常。我可以知道它有什么问题吗?

在科特林中

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"
}

【问题讨论】:

    标签: java android kotlin interface


    【解决方案1】:

    我知道了,我们需要添加

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

    }
    

    并将具体方法标记为

    @JvmDefault

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2020-06-07
      • 2013-09-30
      • 1970-01-01
      • 2011-02-12
      • 2011-05-05
      相关资源
      最近更新 更多