有几个简单的测试用例类:
public interface ListCriteria<T> {
// some stuff here
}
public class UserListCriteria implements ListCriteria<User> {
// implementation
}
public interface Editor<T> {
// sample method 1
List<T> listObjectsTest1(ListCriteria<T> criteria);
// sample method 2
<L extends ListCriteria<T>> List<T> listObjectsTest2(L criteria);
}
这里有一个Editor
的实现,Java认为它没有提供必要的实现来满足两个示例方法:
public class UserEditor implements Editor<User> {
@Override
public List<User> listObjectsTest1(UserListCriteria criteria) {
//
}
@Override
public List<User> listObjectsTest2(UserListCriteria criteria) {
//
}
}
两种方法的实现都是错误的。问题在于为什么,尤其是对于后一种方法。
当然,我可以使用interface Editor<T, L extends ListCriteria<T>>
来解决此问题,但我不想这样做,我想要理解为什么我不能在此处使用方法级别的泛型。
UserListCriteria
完全适合,我也必须保持完全相同的参数签名。 - andbi