java泛型数组替代方案_Kotlin泛型Array T导致“不能将T用作具体类型参数 . 使用类代替“但List T不会...
我有一個包含T和一些元數據的數組(或列表)的接口 .
interface DataWithMetadata {
val someMetadata: Int
fun getData(): Array
}
如果我編寫最簡單的接口實現,我會在 emptyArray() 上收到編譯錯誤:"Cannot use T as a reified type parameter. Use a class instead."
class ArrayWithMetadata(override val someMetadata: Int): DataWithMetadata {
private var myData: Array = emptyArray()
override fun getData(): Array {
return myData
}
fun addData(moreData: Array) {
this.myData += moreData
}
}
但是,如果我將接口和實現都更改為列表,我沒有編譯時問題:
interface DataWithMetadata {
val someMetadata: Int
fun getData(): List
}
class ListWithMetadata(override val someMetadata: Int): DataWithMetadata {
private var myData: List = emptyList()
override fun getData(): List {
return myData
}
fun addData(moreData: Array) {
this.myData += moreData
}
}
我懷疑在我的問題中Kotlin泛型有一些有趣的教訓 . 任何人都可以告訴我編譯器在幕后做了什么以及為什么Array失敗但List沒有?是否有一種慣用的方法可以在此上下文中編譯Array實現?
獎金問題:我達到Array over List的唯一原因是我經常看到Kotlin開發人員喜歡Arrays . 是這種情況,如果是這樣,為什么?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java泛型数组替代方案_Kotlin泛型Array T导致“不能将T用作具体类型参数 . 使用类代替“但List T不会...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡年费怎么交
- 下一篇: Java实现世代距离_IGD反转世代距离