Intereting Posts
yield бросает исключение KotlinNullPointerException в buildSequence для проектов maven поделиться текстом в студии android с помощью kotlin Как вызвать LivePagedListProvider с аргументом в базе данных комнаты Подключение к топливу Комната Android: каждая переменная связывания в запросе должна иметь соответствующий метод Большое время компиляции кода Kotlin в IntelliJ Почему нельзя вводить параметр в Kotlin какие-либо другие границы, если он ограничен другим параметром типа? Как я могу получить случайное число в Котлине? Тонкий diff при запуске в intellij и выполнении jar Как скопировать список Завершенных исполнений с помощью RxJava? Как решить KaptError: ошибка при обработке аннотаций в Android Studio 3.0? RxKotlin – Динамический массив наблюдателей Как работает синтаксис доступа к свойствам Kotlin для классов Java (например, EditText setText)? Kotlin – не работает «привет мир» в intellij Невозможно внедрить один и тот же экземпляр в Сервис и ViewModel

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

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

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

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

Solutions Collecting From Web of "Является ли `foo as? Foo` полный эквивалент `foo as Foo?` В kotlin?"

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

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

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


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