Почему я не могу сделать это в Java:
interface Context{
void add(Integer o);
}
class Subclass implements Context{
@Override
public void add(Object o){...}
}
Разве Subclass.add уже не реализовал бы Context.add, поскольку add (Object) может выполнить все, что может добавить (Integer)?
Какой хороший способ обойти это?
Прямо сейчас я делаю некрасивый способ:
private void actuallyAdd(Object o){...}
public void add(Object o){actuallyAdd(o);}
public void add(Integer o){actuallyAdd(o);}
РЕДАКТИРОВАТЬ: это не дубликат вышеупомянутого вопроса.В данном вопросе суперкласс является тем, который имеет более общий «Объект» в качестве параметра, в то время как подкласс является более конкретным.Это не работает, так как более конкретный метод может не справиться с любым объектом.В моем вопросе подкласс менее специфичен, чем суперкласс, то есть подкласс всегда способен обрабатывать все, что требуется суперклассу.