Au lieu d'utiliser if/else, j'aimerais utiliser une carte pour obtenir une implémentation concrète. Je voudrais utiliser des génériques pour déclarer un gestionnaire d'entité spécifique qui gère une entité spécifique mais j'ai le problème que le gestionnaire accepte simplement les extensions de mon interface d'entité. Le code ressemble à ceci:Java Génériques avec "extends"
private Map<Class<IEntity>, IEntityHandler> handlers;
public void callingMethod(IModel model) {
for (IEntity entity : model.getObjects()) {
// handle accepts just IDevice and not IEntity !
handlers.get(entity).handle(entity);
}
}
public interface IEntityHandler<T extends IEntity> {
handle(T entity);
}
public class DeviceHandler implements IEntityHandler<IDevice> {
@Override
public void handle(IDevice deviceEntity) {
// do something
}
}
Comment puis-je obtenir ma méthode de gestion qui prend IEntity? IDevice s'étend depuis IEntity.
Je ne pense pas qu'il ait un paramètre de type 'T' dans la classe qui a la carte comme champ. Cela ne serait pas possible puisque la carte devrait être capable de contenir des gestionnaires pour une variété de classes différentes. C'est tout le but. –
Cela fonctionne !! Merci! – myborobudur