Сначала рассмотрим объект List. Если у меня есть этот код в Kotlin:
Код: Выделить всё
private val aList = listOf(1,2,3)
fun giveMeAList() = aList
fun printAList() = println(aList)
Код: Выделить всё
List aList = TestKotlin.INSTANCE.giveMeAList();
TestKotlin.INSTANCE.printAList(); // [1,2,3]
aList.add(4); // UnsupportedOperationException
TestKotlin.INSTANCE.printAList();
Но теперь рассмотрим идентичный код Kotlin, за исключением замены типов List на Set. Затем этот Java код:
Код: Выделить всё
Set aSet = TestKotlin.INSTANCE.giveMeASet();
TestKotlin.INSTANCE.printASet(); // (1, 2, 3)
aSet.add(4); // no exception thrown
TestKotlin.INSTANCE.printASet(); // (1, 2, 3, 4)
Подробнее здесь: https://stackoverflow.com/questions/787 ... r-the-hood