Вы на самом деле врете, когда вы приводите от Object[]
до E[]
, потому что массивы хранят свой тип компонента во время выполнения, поэтому в действительности невозможно преобразовать из Object[]
в более конкретный тип массива;но поскольку вы находитесь в области видимости параметра типа E, E[]
стирается, чтобы не вызывать ошибку.
На самом деле это лучшее, что вы можете сделать, потому что единственная альтернатива - иметь переменную ""Be" типа Object[]
, но тогда вам придется приводить в E
каждый раз, когда вы получаете что-то из этого, что будет генерировать еще больше непроверенных предупреждений о приведении.Вы никак не можете выбраться из этого, поэтому вам просто нужно их подавить.(если вы не заключаете в оболочку готовый тип, который делает то, что делает ваш класс ArrayList
, который сам делает то же самое и должен внутренне подавлять эти предупреждения)