val list : kotlin.collections.List<Int> = kotlin.collections.ArrayList() // compiled successfully
Why this statement is compiled successfully in Kotlin?
The kotlin.collections.ArrayList type is a typealias for java.util.ArrayList. But java.util.ArrayList class does not implement kotlin.collections.List interface.
java.util.ArrayList implements java.util.List. MutableList contains (a subset of) functions also found in java.util.List The JVM target compiler transparently maps java.util.List to MutableList, and vice versa.
As List is a supertype of MutableList, you can assign any MutableList to List.