У меня есть следующий интерфейс:
public interface Queue<T>{
void addLast(T o) throws IllegalStateException;
}
Затем следующий класс, реализующий его:
public class PersonQueue implements Queue{
private Person[] queue = new Person[1000];
private int curIndex = 0;
public void addLast(Person person) throws IllegalStateException{
if(queue.length > curIndex){
queue[curIndex] = person;
curIndex++;
}else{
throw new IllegalStateException("Queue is already full");
}
}
}
По какой-то причине это вызывает следующую ошибку:
.\PersonQueue.java:1: error: PersonQueue is not abstract and does not
override abstract method addLast(Object) in Queue
public class PersonQueue implements Queue{
^
1 error
При замене моей функции public void addLast(Person person)
пустой функцией public void addLast(Object o)
она работает.
Я искал похожие ошибки, но все они вызваны несоответствием объявленных правил интерфейса и реализующего класса,однако я не вижу, как мой реализующий класс нарушает интерфейс, поскольку T
является универсальным для типа, а Person
является типом.