Вот мой код:
public class ArrayQueue<E> implements QueueInterface<E> {
private int front = -1;
private int rear = -1;
private E[] array;
private int manyItems;
// constructor
public ArrayQueue() {
array = (E[]) new Object[5];
} // end constructor method
public void enqueue(E e) {
if (rear == -1) {
front = rear = e; // **this line gives an incompatible type error**
} // end if
if (rear + 1 > (array.length - 1) ) {
E[] temp;
temp = (E[]) new Object[array.length * 2];
for (int i = 0; i < array.length; i++) {
temp[i] = array[i];
} // end for loop
array = temp;
array[rear + 1] = e;
rear = rear + 1;
} // end if
else {
array[rear + 1] = e;
rear = rear + 1;
} // end else
} // end enqueue method
public E dequeue() {
if (front == -1) {
throw new IllegalStateException("The queue is empty, cannot dequeue");
} // end if
E e = front; // **this line gives an incompatible type error**
front = front + 1;
return e;
} // end dequeue method
public E front() {
if (front == -1) {
throw new IllegalStateException("The queue is empty, cannot return front");
} // end if
E e = front; // **this line gives an incompatible type error**
return e;
} // end front method
} // end ArrayQueue class
Я запутался в том, что я должен делать, так как эти методы основаны на интерфейсе, который я не могу изменить, поэтому не могу изменить методы для возврата int,Кроме того, я думал, что универсальные типы могут содержать данные любого типа, как примитивные, так и Objects.
Я не совсем понимаю, что это значит:
E e = front;
Это одна из строк кода Iбыло дано работать с.Значит, большое E передает, что маленькое e будет переменной общего типа?Я просто использовал эту точную строку с очередью связанного списка, и она работала нормально, так как e был узлом объекта, а не целым числом.Но почему он не может взять int?И поскольку он не может, как я должен возвращать int в метод, который требует универсальный тип возвращаемого значения?