[英]How to override inherited getter from java class in a kotlin companion object
[英]How to override Any parameter in Kotlin with Java Object?
這不是因為它寫在 Java 中。這是因為您試圖通過縮小輸入參數的類型來違反接口契約。 該接口聲明file
可以是任何類型,因為它是 Any 類型。 如果編譯器允許您縮小類型定義,那么您的 class 將能夠調用file
上特定於MultipartBody.Part
的函數,然后將您的 class 的實例作為接口類型傳遞,而其他一些代碼可以傳遞不同的 class 類型到您的 function 作為file
,這沒有意義。
我不能建議如何避免這個問題,因為你沒有說你是如何使用你的界面的。 我看不出它與 Retrofit 有什么關系。
通常,使用 generics 可能會解決此類問題,但這僅適用於某些用例。 例子:
interface Foo<in T> {
suspend fun uploadAvatar(file: T, sessionToken: String)
}
class MyFooBodyImpl: Foo<MultipartBody.Part> {
suspend fun uploadAvatar(file: MultipartBody.Part, sessionToken: String) {
TODO()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.