我对Kotlin的仿制药感到困惑。如何在函数参数中使用T类型的类(在addNewItem()和deleteItem()中)?我收到错误"类型参数T被声明为' out'但发生在' in'位置kotlin"
interface IStorageManager<out T: IFileItem> {
fun getAllItems(): List<T>
fun addNewItem(itemToAdd: T)
fun deleteItem(itemToDelete: T)
}
答案 0 :(得分:3)
如果您的界面仅生成T
,您可以通过使用out
对其进行注释,使编译器清楚地知道它。在您的示例中,您还拥有充当T
消费者的方法,因此out
不起作用。只需删除out
关键字,一切正常。
这是一个很好的参考: https://kotlinlang.org/docs/reference/generics.html