The errors you get have nothing to do with generics, because you implement the method with a different type than the interface applies.
Interface Editordefines
List<T> listObjectsTest1(ListCriteria<T> criteria);
, UserEditor
public List<User> listObjectsTest1(ListCriteria<User> criteria) {
generic type. Editor ListCriteria. ListCriteria T T , implements ListCriteria<User>. , , ", , ".
,
public interface Editor<C, T extends ListCriteria<C>> {
List<C> listObjectsTest1(T criteria);
}
UserEditor
public class UserEditor implements Editor<User, UserListCriteria> {
public List<User> listObjectsTest1(UserListCriteria criteria) {
return null;
}
}
?
Editor
<L extends ListCriteria<T>> List<T> listObjectsTest2(L criteria);
, L
UserEditor
public <L extends ListCriteria<User>> List<User> listObjectsTest2(L criteria) {
return null;
}
L, , .
, , ListCriteria<User>.