Muhammad Usman
11/07/2022, 5:34 AMType parameter output is declared as 'out' but occurs in 'invariant' position in type Flow<PagingData<output>>
abstract class PaginatedFlowUseCase<in Input, out output>(
private val dispatcher: CoroutineDispatcher
) {
operator fun invoke(input: Input): Flow<PagingData<output>> {
return execute(input).flowOn(dispatcher)
}
protected abstract fun execute(input: Input): Flow<PagingData<output>>
}
But it works when changing PagingData to kolin.Result classYoussef Shoaib [MOD]
11/07/2022, 5:54 AMPagingData
is declared with an invariant type parameter. You can either make output
invariant by removing out
, or you can replace Flow<PagingData<output>>
with Flow<PagingData<out output>>
. Also, please use PascalCase for your type parameters, it's the usual convention, so Output
instead of output
.Muhammad Usman
11/07/2022, 5:58 AMabstract class PaginatedFlowUseCase<in Input, Output>(
private val dispatcher: CoroutineDispatcher
) {
operator fun invoke(input: Input): Flow<PagingData<Output>> {
return execute(input).flowOn(dispatcher)
}
protected abstract fun execute(input: Input): Flow<PagingData<Output>>
}
Type argument is not within its bound
Expected: Any
Found: OutputStephan Schroeder
11/07/2022, 8:18 AMOutput
to extend from nonnullable Any
(right now it's Any?
by default). Try abstract class PaginatedFlowUseCase<in Input, Output: Any>
Muhammad Usman
11/07/2022, 9:04 AM