generics блок c# - Как сделать статический метод Java Generic?
public static <E> E[] appendToArray(E[] array, E item) { ...
Обратите внимание на <E>
.
Статическим общим методам требуется собственное обобщенное объявление ( public static <E>
), отдельно от общего объявления public class ArrayUtils<E>
( public class ArrayUtils<E>
).
Если компилятор жалуется на неоднозначность типа при вызове статического универсального метода (опять-таки вряд ли в вашем случае, но, вообще говоря, на всякий случай), вот как явно вызвать статический универсальный метод с использованием определенного типа ( _class_.<_generictypeparams_>_methodname_
):
String[] newStrings = ArrayUtils.<String>appendToArray(strings, "another string");
Это произойдет только в том случае, если компилятор не может определить общий тип, потому что, например, общий тип не связан с аргументами метода.
Ниже приведен фрагмент того, как сделать общий класс java для добавления одного элемента в массив. Как сделать appendToArray статическим методом. Добавление статики к подписи метода приводит к ошибкам компиляции.
public class ArrayUtils<E> {
public E[] appendToArray(E[] array, E item) {
E[] result = (E[])new Object[array.length+1];
result[array.length] = item;
return result;
}
}