Pitel
07/16/2021, 9:30 AMgildor
07/16/2021, 9:37 AMclass PagedStore<T>(value: T)
But should be
class PagedStore<out T>(value: T)Dominaezzz
07/16/2021, 9:37 AMDominaezzz
07/16/2021, 9:38 AMpager?gildor
07/16/2021, 9:38 AMfun pager(store: PagedStore<List<*>>)Pitel
07/16/2021, 9:39 AMclass PagedStore<T : List<*>>( ... )Pitel
07/16/2021, 9:40 AMfun RenderContext.pager(pagedStore: PagedStore<List<*>>) { ... }gildor
07/16/2021, 9:40 AMgildor
07/16/2021, 9:41 AMgildor
07/16/2021, 9:42 AMclass PagedStore<out T : List<*>>(value: T)Fleshgrinder
07/16/2021, 9:42 AMgildor
07/16/2021, 9:42 AMgildor
07/16/2021, 9:43 AMPitel
07/16/2021, 9:45 AMout doesn exactly help.gildor
07/16/2021, 9:45 AMgildor
07/16/2021, 9:45 AMPitel
07/16/2021, 9:45 AMgildor
07/16/2021, 9:45 AMgildor
07/16/2021, 9:46 AMgildor
07/16/2021, 9:46 AMgildor
07/16/2021, 9:47 AMgildor
07/16/2021, 9:50 AMout to be covariant, but also it still has unsafe invarience (but it safe for cases where it used):
public operator fun contains(element: @UnsafeVariance E): BooleanPitel
07/16/2021, 9:50 AMgildor
07/16/2021, 10:16 AMgildor
07/16/2021, 10:17 AMfun pager(store: PagedStore<out List<*>>)
So it will be possible to pass any List there, but you still have to do unsafe cast inside (though, it will not be unsafe)