Я новичок в Java и сталкиваюсь с проблемой при объявлении универсального массива как статического. Мне нужна ваша помощь , чтобы решить и понять, что происходит не так.Общая декларация статического массива
public class ThreadedSorter<E> {
private static int number_of_threads = 2;
private static E[] array, aux;
....
public static <E> E[] mergeSort(E[] unsortarray) {
array = unsortarray;
.....
return array;
}
private static void mergeSortHelper(int low, int hi) {
if(low==hi) return;
int mid = (low+hi) >> 1;
mergeSortHelper(low,mid);
mergeSortHelper(mid+1, hi);
merge(low,mid+1,hi);
}
private static void merge(int low, int hi, int upperBound) {
.....
while(low <=mid && hi <= upperBound)
if(array[low] <= array[hi])
aux[j++] = array[low++];
........
}
endclass
я столкнулся вопрос на следующее заявление - о том, не статическая переменная типа не может ссылаться из статического контекста.
"private static E [] array, aux;"
Не могли бы вы рассказать мне, где мне не хватает.
С уважением, Pratik
Просто не используйте массивы, особенно при работе с дженериками. Используйте коллекции! – Seelenvirtuose
Обратите внимание, что ваш метод 'mergeSort' не должен иметь параметр типа' '- обратите внимание, что это другой параметр типа, который скрывает параметр типа' E' от класса. –
Jesper