В проекте Spring Data CrudRepository предоставляет сложные функции CRUD для управляемого класса сущности.Что означает <S extends T> save (S entity); в весеннем репозитории?
public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {
<S extends T> S save(S entity);
T findOne(ID primaryKey);
Iterable<T> findAll();
Long count();
void delete(T entity);
boolean exists(ID primaryKey);
// … more functionality omitted.
}
В общем, я знаю, что «S расширяет T» означает, что то есть S, возвращаемый тип операции сохранения, должен быть подтипом T. Почему необходимо добавить такие, как ограничение? Я думаю, что было бы хорошо делать что-то вроде этого:
T save (T entity);
Как и в
void delete(T entity);
Я гугле, чтобы получить дополнительную помощь, и я понял, следующий вопрос на StackOverflow себя, но это ISN» т действительно для меня ясно:
Spring CrudRepository: why to invent a new generic type S
спасибо.
Я думаю, что вы правы. 'S' является избыточным, а дизайн подписи является ошибкой. – ZhongYu