fun main() {
val stack = java.util.Stack<Int>();
stack.push(null);
val arr = java.util.ArrayList<Int>();
arr.add(null);
}
IDEA подчеркивает null
в 5-й строке красной волнистой линией и предупреждает, что Null не может быть значением ненулевого типа Int. Но он игнорирует null
в 3-й строке.
А после удаления пятой строчки программа может работать нормально.
почему в Kotlin Stack может нажать (null), а ArrayList не может добавить (null)?
Спасибо.
ArrayList — одна из немногих коллекций Java, которые специально обрабатываются компилятором Kotlin, настроенным на распознавание допустимости значений NULL при работе с ним. Посмотреть их все можно здесь. Я полагаю, что они вручную настроили компилятор для конкретных методов этих классов Java.
Поскольку стек не был настроен таким образом, в его методах не применяется обнуляемость, что характерно для большинства классов Java в Kotlin.