#oop #kotlin
#ооп #kotlin
Вопрос:
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)?
Спасибо.
Ответ №1:
ArrayList — это одна из немногих коллекций Java, которые специально обрабатываются компилятором Kotlin, который был настроен на распознавание правильного обнуления при работе с ним. Вы можете увидеть их все здесь. Я полагаю, что они вручную настроили компилятор для конкретных методов этих классов Java.
Поскольку стек не был настроен таким образом, возможность обнуления не применяется к его методам, как это типично для большинства классов Java в Kotlin.