Я согласен, я не вижу причин, по которым это должно быть небезопасно.
Я считаю, что
Iterator<U> it2 = (Iterator) it;
должно быть достаточно для компиляции приведения, но вы все равноподавить предупреждения, если вы хотели это без предупреждения.Подавление предупреждения - это хорошо, если вы понимаете причину предупреждения и знаете, что оно не будет применяться в этом случае.
Возможно, любой используемый вами код, требующий Iterator<U>
, должен быть реорганизован для принятия Iterator<? extends U>
.