Дженерики в унаследованном коде

Это известная проблема, вы можете проголосовать за https://youtrack.jetbrains.com/issue/KT-17186

. В качестве обходного пути вам необходимо объявить наследник MyClass, который заменяет все параметры типа. Это позволит решить вашу проблему.

9
задан David Koelle 8 December 2009 в 18:38
поделиться

5 ответов

Я предложил бы игнорировать предупреждения. Иначе Вы будете помещать много времени в обновление унаследованного кода, не делая улучшений его функциональности.

Обновление: Замечательный комментарий от Luke, что я думал, должен получить больше видимости: "Дженерики являются способом поймать ошибки времени выполнения во время компиляции. Если этот унаследованный код не имеет ошибки в нем, что Вы думаете, связаны с кастингом, я оставил бы его в покое (если это не, повредился, не фиксируйте его)"

9
ответ дан 4 December 2019 в 12:22
поделиться

Сталкивающийся с подобной проблемой, мы решили обновить до дженериков стиля Java 5 только в коде, который был отредактирован по другой причине. Таким образом, если у Вас есть ошибка для фиксации в DoItFast.java, обновите DoItFast.java для использования дженериков стиля Java 5. Области кода, которые редактируются и изменяются регулярно, будут обновляться быстро. После нескольких недель или месяцев этого поведения, можно переоценить условие кодовой базы.

Если это не получит задание, сделанное достаточно быстро для Вас, то иногда я буду использовать медленное время после ланча только к бессмысленно очистке несколько классов и ускорять процесс вперед.

3
ответ дан 4 December 2019 в 12:22
поделиться

Насколько я знаю, Вы идете об этом максимально эффективно. Это, очевидно, не прекрасно, но Вы закончите в конечном счете.

Я рекомендую сделать это шаг за шагом, однако; существуют вероятные части кода, который извлек бы выгоду больше из этого, чем другие, внимание на тех. При попытке сделать все это в одной развертке рискует представлять новые ошибки коду. У нас есть одно такое место, где у нас есть набор, который содержит контекстно-зависимые данные, и дженерики на самом деле не могут работать на него.

В основном сделайте то, что Вы делаете, но делаете это шаг за шагом как часть другой работы, вместо того, чтобы пытаться зафиксировать все это в одном броске.

3
ответ дан 4 December 2019 в 12:22
поделиться

Я не думаю, что необходимо обновить весь старый код. Возможно, если Вы могли бы так или иначе определить, какие части старого кода часто используются и только обновляют их для использования универсальных типов? Или возможно Вы могли только взволновать, когда необработанный тип возвращается из государственной функции? Много этих случаев является, вероятно, просто частными / локальными переменными, которые уже записаны без универсальных типов и по-видимому работают просто великолепно, таким образом, это, вероятно, не стоит усилия переписать их.

1
ответ дан 4 December 2019 в 12:22
поделиться

Я понимаю с ИДЕЕЙ, можно выбрать все классы, открыть контекстное меню, и выбор Осуществляют рефакторинг | Generify. Задание сделано. Это - конечно, более приятный опыт работать с кодом generified (IMO).

1
ответ дан 4 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: