Мне нужно создать класс для наследования Hashcode, и мне нужно переопределить метод contains.StackOverflowError при переопределении Hashtable.contains() java
@Override
public boolean contains(Object value) {
if (!this.containsValue(value))
return true;
return false;
}
public void add(Object key, Object value) {
if (!this.contains(value)) {
this.put(key, value);
}
}
Компиляция просто прекрасна, но когда я запускаю ее, я получаю StackOverflowError. Я думаю, что получаю некоторый рекурсивный бесконечный цикл, но я не могу понять это. Любая помощь приветствуется! printscreen of the error
Ye, s это рекурсия, потому что вы просто вызываете 'contains' в' contains'. Если вы хотите вызвать расширенную версию, используйте 'super :: contains'. Но если вы просто вызываете версию метода базового класса, зачем вообще переопределять? – Robert