РЕДАКТИРОВАТЬ: см. Внизу
Прежде всего, я искал ответ, прежде чем спрашивать его, но, как вы можете видеть из заголовка, я понятия не имею, как это называется, и я буду редактировать вопрос, когда смогу.
Пожалуйста, прости меня за это.
У меня есть следующий абстрактный класс:
public abstract class ValidableDTO implements Serializable {
public abstract boolean isValid();
public abstract boolean equals(ValidableDTO compared);
// EDIT : new solution
public abstract <T extends ValidableDTO> boolean equals(T compared);
}
Я бы хотел получить похожую реализацию:
public class MyDTO extends ValidableDTO {
private String myValue; //With a getter and setter of course
public MyDTO() {
// ...
}
@Override
public boolean isValid() {
return true; // Validation
}
// __________ LOOK AT THE FOLLOWING PARAMETER TYPE __________
@Override
public boolean equals(MyDTO compared) {
return true; // Comparison
}
}
Самое близкое, что я мог получить, это
@Override
public boolean equals(ValidableDTO compared) {
boolean isEqual = false;
if (compared instanceof MyDTO) {
isEqual = getValue().equals(compared.getValue());
}
return isEqual;
}
Я пытался использовать public abstract boolean equals(<? extends ValidableDTO> compared);
, но это не работает.
Возможно ли даже возможно (это должно быть ИМО)? Спасибо за ваше время и ... я до сих пор не знаю, как описать это в 1 предложении ... (смеется)
С уважением.
- я
На шаг ближе, благодаря пользователю: aps!
следующие работы в определении класса Abstract (ValidableDTO)
public abstract <T extends ValidableDTO> boolean equals(T compared);
__ НО __
реализация в MyDTO все еще не в порядке, и, в конце концов, это точно так же, как использование моего решения «if instanceof», поскольку ValidableDTO является абстрактным классом и ДОЛЖЕН наследоваться.
Как это выглядит сейчас, используя решение Aps:
public <T extends ValidableDTO> boolean equals(T compared) { ... }
Мне все еще нужно проверить, является ли это экземпляром MyDTO ...
НА СТОРОНЕ ПРИМЕЧАНИЕ: Google, похоже, не знает, настоящие ли слова "Validable" или "Validatable" ... какое из них правильное?