Intereting Posts
Возможно ли запустить последнюю версию Akka Framework (2.5.2) в Android-проекте? Что происходит, когда кнопка «Назад» нажата до завершения асинхронного вызова? Конструктор класса данных с двумя разными конструкторами в Котлине «несоответствие типа приемника» с фрагментом и тостом Anko Ошибка: конфликт с зависимостью «com.google.code.findbugs: jsr305» Google Espresso: удалять данные пользователя по каждому тесту Java / Kotlin: Почему разборки Джексона датируются иначе, чем SimpleDateFormat? Преобразование java-функции, которая использует байты для Kotlin Как настроить проект eclipse для использования Kotlin с JPA / Hibernate? Вызов оператора и перегрузка оператора в Котлине Kotlin: Можете ли вы использовать именованные аргументы для varargs? Как сбросить FrameLayout или удалить кеш макета Модуль Plain Kotlin в Android Studio 3.0, `api` не поддерживается? Как создать запрос HQL с использованием полей расширенного класса Модернизация завершается, когда я бросаю исключение в перехватчик

Критики Котлина и неправильный вывод

Рассмотрим общий class Item и определенный class Event который наследует его:

 open class Item<T> { fun copyFrom(item: T) { if (this is Event && item is Event) { owner = item.owner value = item.value } } } class Event : Item<Event> { open var owner = "" open var value = 0 } 

Благодаря выводу типа нам не нужно бросать элемент в событие, и мы можем напрямую обращаться к owner и его value . Однако он говорит, что item имеет тип T и не может быть передан Event в item is Event . Я считаю, что этого не должно произойти, поскольку это предложение верное в Java?

РЕДАКТИРОВАТЬ:

Мне известно о том, что реализация copyFrom должна выполняться в Event , но это просто для демонстрации проблемы вывода типа.

Даже когда вы разбираете синтаксические проблемы: не делайте этого.

Вы создаете универсальный контейнер, который явно проверяет, входит ли отдельный подкласс . Затем сделайте поля подпуска и доступа в подклассе.

Это похоже на абсолютную противоположность хорошего дизайна OO. Вы базовый класс не должны ничего знать о каком-либо подклассе!