我有一个名为 Entity 的根类。我还有对实体子类型执行 CRUD 操作的服务类。所以,我的服务类定义遵循这个模式
class Entity {
//the root class
}
class Service<T extends Entity> {
//root service class containing common CRUD operations
}
class SomeEntity extends Entity {
}
class SomeService extends Service<SomeEntity> {
}
我维护一个实体类的映射——>到他们相应的服务,比如
Map<Class<? extends Entity>, Service<? extends Entity>> = serviceMap
new HashMap<Class<? extends Entity>, Service<? extends Entity>>();
但是,上述内容并不强制该类及其对应的 Service 属于同一层次结构。因此,即使在转换之后,我的客户端代码也必须再次转换它。如何避免以下情况?并在 key 和 value 之间强制执行严格的关系?
public <T extends Entity> Service<T> get(Class<T> clazz) {
return (Service<T>) serviceMap.get(clazz);
}
//example of client code
SomeService service = (SomeService) serviceRegistry.get(SomeEntity.class);