Intereting Posts
Java Stream с :: новым для Kotlin Выполнить функцию из строки? Литеральный синтаксис класса для параметризованных классов в Котлине Как разрешить нарушение ограничения конечного ограничения в Котлине? Точное определение «функционального интерфейса» в Java 8 Класс данных Kotlin от Json с использованием GSON Android открыта для поиска программно Неразрешенная ссылка: DaggerTestComponent (Kotlin с кинжалом для теста) Как проверить класс с анонимным прослушивателем, который установлен внутри функции? Список файлов рекурсивно в Котлине Kotlin ": некоторые файлы JAR в пути к классам имеют библиотеку Runtime Kotlin, вложенную в них" Безглавая однопользовательская библиотека для JVM и JavaScript Подкласс класса закрытого класса Kotlin должен быть отлит в базовый класс, если он представлен как RxJava Observable Android: вертикальное пространство вокруг текста с пользовательским шрифтом Невозможно найти сеттер для поля – используя базу данных Kotlin с комнатой

Является ли `foo as? Foo` полный эквивалент `foo as Foo?` В kotlin?

Является ли foo as? Foo foo as? Foo полный эквивалент foo as Foo? ?

Если да, то почему у обоих есть?

Если нет, то в чем разница?

as? является оператором безопасного литья .

Обычно, если вы пытаетесь использовать переменную, и она терпит неудачу, вы получаете ClassCastException . Используя этот оператор, он просто возвращает null вместо этого в этом случае.

Это означает, что возвращаемый тип foo as? Foo Выражение Foo? самом деле Foo? , потому что он может вернуть значение null .


foo as Foo? является литой foo для нулевых Foo? type, это может вызвать исключение, если переменная не относится к этому типу (т. е. это не экземпляр Foo или null ).