java 抽象类 泛型_java – 在不同泛型参数的抽象类中返回泛型是不好的做法

我有这个抽象类,我已经定义了一些实现数据库操作的方法(获取行,插入,删除等)

现在我想创建将返回一些行(即整个表)的方法,但是我希望它返回相应的模型类而不是域类(它基本上与域相同但没有关系列表和其他一些东西我不需要表示层).

抽象类是

public abstract class DomainService {

protected abstract Logger getLogger();

protected final Validator validator;

protected DomainService() {

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

this.validator = factory.getValidator();

}

abstract public void insert(T object) throws ValidationException;

abstract public void delete(T object) throws EntityNotFoundException;

abstract public List fetchAll();

}

我想添加另一个方法,它将调用fetchAll()然后迭代每个项目并创建等效的模型并返回该列表.

public List fetchAllModels(Class modelClass) {

List domains = fetchAll();

List models = new ArrayList(domains.size());

for ( T domain : domains) {

K model = modelClass.newInstance();

models.add(model.fillIn(domain));

}

return models;

}

忽略这是我刚刚编写问题的代码,是否可以为类中未定义的泛型添加参数. IMO一个类可以有返回其他数据类型的方法,所以它应该不是问题.在我的情况下,我传递了类,所以我可以创建模型的实例,然后使用域来填充成员.我有两个意见,

>我写的那个,我在模型类中添加一个方法,从域对象创建它自己.我在考虑一个构造函数,它将域对象作为参数,但我认为使用泛型调用构造函数有点麻烦(它至少需要反射实用程序)所以我想要一个方法来填充使用默认构造函数创建实例后的详细信息.此外,模型位于更高层,我认为更高层应使用更低层(数据库 – >域类 – >访问类(DAO) – >服务类 – > Servlet类—-> JSP显示数据)

>我可以向域类添加一个方法,将域转换为其模型并调用它而不必传递模型的类

public List fetchAllModels() {

List domains = fetchAll();

List models = new ArrayList(domains.size());

for ( T domain : domains) {

models.add(domain.createModel());

}

return models;

}

但我觉得域类应该像数据库中的表一样干净,只有与列有关的方法.

在类上添加参数会更好吗?我只会用它来做这个方法……

任何想法评论总是欢迎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值