Ошибка Java: name clash: метод в Class переопределяет метод, стирание которого совпадает с другим методом, но ни один не переопределяет другой
У меня есть код в моем проекте, как это ниже:
public class CommandValidator extends AbstractValidator<CommandTransaction> {
@Override
public boolean validate(CommandTransaction object) {
return false;
}
}
public abstract class AbstractValidator<T> implements Validator<T>{
@Override
public boolean validate(T object) {
return false;
}
}
public interface Validator<T> {
default boolean validate(T object) throws Exception {
return false;
}
}
У меня ошибка при попытке скомпилировать его:
[ERROR] error: name clash: validate(CommandTransaction) in CommandValidator overrides a method whose erasure is the same as another method, yet neither overrides the other
[ERROR] first method: validate(Object) in Validator
[ERROR] second method: validate(T) in AbstractValidator
[ERROR] where T is a type-variable:
[ERROR] T extends Object declared in class AbstractValidator
Есть идеи, что является причиной ошибки? Почему первый метод имеет объект вместо общего validate(Object)
?