Hello Stack社区,
请指导我,在避免遵循以下类型层次结构中未经检查的类型分配的同时,执行高效,优雅的泛型键入的最佳方法是什么(我在当前的示例输入解决方案中也包括了该示例,但我有一种感觉我在某处大规模失败...)
DAO操作的接口(在这里,通用类型是显而易见的,我认为是合理的解决方案):
interface DaoInterface<T> {
T getData();
T setData(T t);
}
用于管理的抽象Dao类(类和接口都具有相同的通用类型):
abstract class DaoAbstractBaseClass<T> implements DaoInterface<T> {
/* mostly data and configuration handling, thus needed */
/* DAO operations ensured due to class generic parameter */
}
实际实现(使用类型,以便能够推断和使用从Dao接口返回的类型):
class ConcreteDaoImplementation extends DaoAbstractBaseClass<ConcreteType>
现在有一些抽象服务类(包含Dao实例并使用它),将字段映射到Dao的最低级别的接口(因为我只对通过接口操作使用它感兴趣):
abstract class SomeServiceClass<T> {
private DaoInterface<T> dao;
}
具体类型的服务(例如示例ConcreteType
)的实际实现:
class RealService extends SomeServiceClass<ConcreteType> {
/* Dao is now ConcreteType*/
}
现实生活中的实际DAO是由来自外部世界的依赖注入提供的。
我认为让我们感到困惑的是,将泛型移植到最底层的实现类中只是为了参数化顶层抽象接口。其次,我认为将abstract class DaoAbstractBaseClass<T> implements DaoInterface<T>
构造为天真地生成类只是为了确保其接口实现的类型……有人可以指出可以增强的内容还是指出一些智能的外部材料吗?我将不胜感激!