Generics: ожидается массив типа
У меня есть следующий код:
public class DEF implements Set<ABC> {
private EnumSet<ABC> xyz=EnumSet.noneOf(ABC.class);
@Override
public <T> T[] toArray(T[] a) {
return xyz.toArray(a);
}
}
Что дает мне следующее предупреждение:
Массив типа 'ABC[]' ожидается в строке 43
Это опасно? Или я могу игнорировать это? Почему это предупреждение?
1 ответ
Решение
Предупреждение полностью верно; ваш код не имеет смысла.
Письменно <T> T[] toArray()
Вы создали функцию, которую можно вызывать с любым параметром типа и которая будет возвращать массив этого типа.
Всегда возвращая массив ABC
s нарушает то, что вы утверждали, что это будет делать.
Короче говоря, эта функция не должна быть универсальной.
Ничто из этого не применимо к вашему делу, потому что база Set<E>
интерфейс требует этого.
Я не имею понятия почему Set<E>
объявляется таким образом, но вы ничего не можете сделать с предупреждением.