Это известная проблема, вы можете проголосовать за https://youtrack.jetbrains.com/issue/KT-17186
. В качестве обходного пути вам необходимо объявить наследник MyClass, который заменяет все параметры типа. Это позволит решить вашу проблему.
Я предложил бы игнорировать предупреждения. Иначе Вы будете помещать много времени в обновление унаследованного кода, не делая улучшений его функциональности.
Обновление: Замечательный комментарий от Luke, что я думал, должен получить больше видимости: "Дженерики являются способом поймать ошибки времени выполнения во время компиляции. Если этот унаследованный код не имеет ошибки в нем, что Вы думаете, связаны с кастингом, я оставил бы его в покое (если это не, повредился, не фиксируйте его)"
Сталкивающийся с подобной проблемой, мы решили обновить до дженериков стиля Java 5 только в коде, который был отредактирован по другой причине. Таким образом, если у Вас есть ошибка для фиксации в DoItFast.java, обновите DoItFast.java для использования дженериков стиля Java 5. Области кода, которые редактируются и изменяются регулярно, будут обновляться быстро. После нескольких недель или месяцев этого поведения, можно переоценить условие кодовой базы.
Если это не получит задание, сделанное достаточно быстро для Вас, то иногда я буду использовать медленное время после ланча только к бессмысленно очистке несколько классов и ускорять процесс вперед.
Насколько я знаю, Вы идете об этом максимально эффективно. Это, очевидно, не прекрасно, но Вы закончите в конечном счете.
Я рекомендую сделать это шаг за шагом, однако; существуют вероятные части кода, который извлек бы выгоду больше из этого, чем другие, внимание на тех. При попытке сделать все это в одной развертке рискует представлять новые ошибки коду. У нас есть одно такое место, где у нас есть набор, который содержит контекстно-зависимые данные, и дженерики на самом деле не могут работать на него.
В основном сделайте то, что Вы делаете, но делаете это шаг за шагом как часть другой работы, вместо того, чтобы пытаться зафиксировать все это в одном броске.
Я не думаю, что необходимо обновить весь старый код. Возможно, если Вы могли бы так или иначе определить, какие части старого кода часто используются и только обновляют их для использования универсальных типов? Или возможно Вы могли только взволновать, когда необработанный тип возвращается из государственной функции? Много этих случаев является, вероятно, просто частными / локальными переменными, которые уже записаны без универсальных типов и по-видимому работают просто великолепно, таким образом, это, вероятно, не стоит усилия переписать их.
Я понимаю с ИДЕЕЙ, можно выбрать все классы, открыть контекстное меню, и выбор Осуществляют рефакторинг | Generify. Задание сделано. Это - конечно, более приятный опыт работать с кодом generified (IMO).