【发布时间】:2016-02-02 02:58:05
【问题描述】:
尝试在 Java 项目中实现泛型和继承类。 出于这个原因,我创建了“基”类和接口,它们将继承所有特定的类和接口。
我的意思是,我有一个基本接口
public interface BaseServices<T> {
public boolean validate(T item, int id) throws Exception;
}
以及该接口的基本实现
public class BaseServicesImpl implements BaseServices<BaseBO> {
@Autowired
BaseDao dao;
CategoryBO bo;
public BaseServicesImpl()
{
this.bo = new CategoryBO();
}
@Override
public boolean validate(BaseBO item, int id) throws Exception {
return dao.validate("name",item.toString(), id);
}
}
BaseBO 是所有其他对象都将扩展的业务对象。
然后,对于特定对象,我将拥有一个扩展基础接口的特定接口。
public interface CategoryServices extends BaseServices {
}
及其实现:
public class CategoryServicesImpl extends BaseServicesImpl implements CategoryServices<CategoryBO> {
@Autowired
CategoryDao categoryDao;
public CategoryServicesImpl()
{
this.dao = categoryDao;
}
@Override
public boolean validate(CategoryBO item, int id) throws Exception {
return dao.validate("name",item.getName(), id);
}
}
某些对象可以实现通用的“Validate”方法(仅验证名称)或将其扩展为所需的类公共类 CategoryServicesImpl 扩展 BaseServicesImpl 实现 CategoryServices。
我怎样才能做到这一点?是否可以?我正在尽我所能重用我的代码。如果有其他方法,请告诉我。
编辑: 我想做的是有一个基类,其中包含所有类的所有通用方法,比如说,创建、编辑、删除、获取、getAll 等的基本方法。然后在每个类中我也可以拥有并覆盖这些方法,因为在某些类中它们会有所不同,但在大多数情况下,它们只会做相同的事情,因此它将调用在基类中定义的通用方法。
【问题讨论】:
-
“我怎样才能完成这项工作?”你到底想做什么?
-
这可能是对继承的滥用,以后会让你头疼。我的建议:通过重构而不是大的前端类层次结构来消除重复。
-
tl;dr,但乍一看似乎至少也应该输入
BaseDao,可能还有CategoryDao,可能与impl的类型相同 -
你说
CategoryServicesImpl extends BaseServicesImpl,但为什么呢?我看不出它有什么好处。 -
@AustinD 我添加了一些关于我想要做什么的额外信息。
标签: java object generics inheritance