在方法中使用泛型类型的接口

时间:2017-11-12 16:51:42

标签: generics kotlin

我对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)

}

screen

1 个答案:

答案 0 :(得分:3)

如果您的界面仅生成T,您可以通过使用out对其进行注释,使编译器清楚地知道它。在您的示例中,您还拥有充当T消费者的方法,因此out不起作用。只需删除out关键字,一切正常。

这是一个很好的参考: https://kotlinlang.org/docs/reference/generics.html