Почему в Kotlin Stack<Int> может нажать (null), а ArrayList<Int> не может добавить (null)?

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)?

Спасибо.

В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Принцип подстановки Лискова
Принцип подстановки Лискова
Принцип подстановки Лискова (LSP) - это принцип объектно-ориентированного программирования, который гласит, что объекты суперкласса должны иметь...
3
0
118
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ArrayList — одна из немногих коллекций Java, которые специально обрабатываются компилятором Kotlin, настроенным на распознавание допустимости значений NULL при работе с ним. Посмотреть их все можно здесь. Я полагаю, что они вручную настроили компилятор для конкретных методов этих классов Java.

Поскольку стек не был настроен таким образом, в его методах не применяется обнуляемость, что характерно для большинства классов Java в Kotlin.

Другие вопросы по теме