Java-这个泛型类的正确签名是什么?
这是我的一节课:Java-这个泛型类的正确签名是什么?,java,generics,Java,Generics,这是我的一节课: public class ProxyDAO<T extends DAO<? extends Model>> implements DAO<? extends Model> { ... } 但现在不允许使用模型的子类 我如何告诉编译器ProxyDAO实现了DAO接口,并且该接口将接受一个模型类或任何子类或模型 DAO.java public interface DAO<T extends Model> { T fin
public class ProxyDAO<T extends DAO<? extends Model>> implements DAO<? extends Model> {
...
}
但现在不允许使用模型的子类
我如何告诉编译器ProxyDAO实现了DAO接口,并且该接口将接受一个模型类或任何子类或模型
DAO.java
public interface DAO<T extends Model> {
T findByPK(Object pk);
}
公共接口DAO{
T findByPK(对象pk);
}
使用以下方法:
public class ProxyDAO<T extends Model> implements DAO<T>
公共类ProxyDAO实现DAO
如果需要考虑DAO的超类:
public class ProxyDAO<T extends Model, V extends DAO<T>> implements DAO<T>
公共类ProxyDAO实现DAO
像这样做
class ProxyDao<M extends Model, T extends Dao<M>> implements Dao<M> {
}
类ProxyDao实现Dao{
}
我明白了。在implements
子句中,除了使用两个泛型参数外,无法设置未定义的类型。您可以在那里设置实际类型,如模型
。因此,该代码将起作用:
class Model{}
class SubModel extends Model{}
interface DAO<T extends Model> {
T findByPK(T pk);
}
class ProxyDAO<T extends DAO<? extends Model>> implements DAO<Model> {
public ProxyDAO() {
findByPK(new SubModel());
}
@Override
public Model findByPK(Model pk) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
类模型{}
类子模型扩展了模型{}
接口道{
T-findByPK(T-pk);
}
类ProxyDAO
class Model{}
class SubModel extends Model{}
interface DAO<T extends Model> {
T findByPK(T pk);
}
class ProxyDAO<T extends DAO<? extends Model>> implements DAO<Model> {
public ProxyDAO() {
findByPK(new SubModel());
}
@Override
public Model findByPK(Model pk) {
throw new UnsupportedOperationException("Not supported yet.");
}
}