Java 如何以一个具体实例作为参数来强制具体类?
这是我的用例Java 如何以一个具体实例作为参数来强制具体类?,java,oop,Java,Oop,这是我的用例 public interface dataModel { //nothing } public interface dataRepo { public doIt(dataModel a); } public class concreteDataModel implements dataModel { public doIt(dataModel a); } public class concreteDataRepo implements dataRepo {
public interface dataModel {
//nothing
}
public interface dataRepo {
public doIt(dataModel a);
}
public class concreteDataModel implements dataModel {
public doIt(dataModel a);
}
public class concreteDataRepo implements dataRepo {
public doIt(dataModel a);
}
我觉得我做错了。我有几个datarepo和datamodel。我希望回购协议采用其自身类型的数据模型。是否有任何设计模式可以使这一点变得清晰?您可以使用泛型
public interface dataModel {
//nothing
}
public interface dataRepo<T extends dataModel> {
public doIt(T a);
}
public class concreteDataModel implements dataModel {
public doIt(dataModel a);
}
public class concreteDataRepo implements dataRepo<concreteDataModel> {
public doIt(concreteDataModel a);
}
公共接口数据模型{
//没什么
}
公共接口dataRepo{
公共事务部;
}
公共类concreteDataModel实现了dataModel{
公共doIt(数据模型a);
}
公共类concreteDataRepo实现dataRepo{
公共doIt(模型a);
}
您可以尝试泛型:
interface dataModel { }
class concreteDataModel implements dataModel { }
interface dataRepo<E extends dataModel> {
public void doIt(E a);
}
class concreteDataRepo implements dataRepo<concreteDataModel> {
@Override
public void doIt(concreteDataModel a) {
}
}
接口数据模型{}
类concreteDataModel实现数据模型{}
接口数据报告{
公共部门(EA);
}
类concreteDataRepo实现dataRepo{
@凌驾
公共void doIt(concreteDataModel a){
}
}
这不是公共事务吗(dataRepo a)?他说的是同类的,这就是为什么我要问。@Dici你指的是哪一行?我的理解是,他希望在datarepo实现上将datamodel和datarepo绑定在一起。也许OP可以更新一下他的问题。你改的那个!在dataRepo中,但事实上我想让OP澄清它的问题,我不确定我是否理解得很好,因此我的评论可能不相关。你所说的同类的是什么意思?给出一个具体的例子,说明什么是禁止的,什么是允许的