我是新来的Java和我编码像这样由一个模块化的应用程序:如何处理模块化应用程序中的泛型类/接口?
************* ******* ***********
* * * * * Data *
* Front-end * -------- * API * ------- * Handler *
* * * * * *
************* ******* ***********
从本质上讲,我希望能够定义具有N类的API,然后有一个“数据处理程序”模块处理将对象存储在某个地方(例如数据库),而前端不需要知道如何实现的任何内容。
因此,假设我在API中定义了两个类:Contract和Company。 我希望前端可以这样做:
myContract = new Contract();
myCompany = new Company();
myContract.setCompany(myCompany);
myContract.save();
myCompany.save();
这样,将来我可以改变我存储的数据(数据处理程序模块)的方式,在不改变任何代码前端。
为此,我在API模块中为Contract和Company编写了两个接口。 然后,在数据处理程序模块中,我写入了实现两个接口的类:DbContract和DbCompany。现在
,我遇到的问题,因为我已经定义在合同接口的getter/setter方法为:
public interface Contract {
public Company getCompany();
public void setCompany(Company company);
}
而且在DbContract实现他们为:
public class DbContract implements Contract {
private DbCompany company;
@Override
public Company getCompany() {
return this.company;
}
@Override
public void setCompany(Company company) {
this.company = company;
}
}
然而,我我得到类型不匹配错误遍布各地... 我完全错过了观点?我应该怎么做呢?
在此先感谢您的帮助。
在'setCompany',你不能没有做类型转换分配'Company'到'DBCompany'参考。您何时/如何创建'DBCompany'? – BretC
我的想法是在名为Manager的API中有一个类,该类具有实例化和返回对象的方法。像'公共合同createContract(){返回新的DbContract(); ''。是否有正确的方法去解决这个问题? –
你的API的主要目的是隐藏实现细节,使得'Frontend'只与接口一起操作。通过在那里创建对象,你打破了这个规则。 –