List<out T> in Kotlin is equivalent to List<? extends T> in Java.
List<in T> in Kotlin is equivalent to List<? super T> in Java
For example in Kotlin you can do things like
val value : List<Any> = listOf(1,2,3)
//since List signature is List<out T> in Kotlin
The reasoning is you can mark generic “out” if you returning it, but never receiving. And you can mark it “in” if you receive it, but never return.