Je suis nouveau à l'héritage Java et j'ai des difficultés à comprendre les détails du concept. Dans mon projet Springboot, j'avais à l'origine 2 classes de domaine:
public class ExcerptDAO implements ExcerptsDAO { ... }
3 Réponses :
Vous avez essayé de déclarer un paramètre générique pour les excerptsdao, mais cela n'en a pas. Mais DAO a un paramètre générique (voir T dans E.g. Si vous souhaitez créer un ExpertSDAO non seulement vos extraits, mais pour d'autres classes (ce qui n'a aucun sens dans ce cas), vous pouvez créer un paramètre générique. P> DAO
public interface ExcerptsDAO<T> extends DAO<T>{
public List<T> getByAuthor(String... params);
}
Si une classe ou une interface ne prend pas de paramètres génériques, vous n'êtes pas autorisé à ajouter un peu, comme vous n'êtes pas autorisé à passer des paramètres à une méthode qui n'en prend aucun. Donc, Pour résumer: Si vous le feriez ExcerpttsDao code> has_no_ paramètres génériques et corrige déjà le type générique transmis à
DAO code> pour être
extrait code>. Donc, vous ne pouvez pas changer le paramètre et il n'est donc pas autorisé à ajouter un. P>
Classe publique ExperptDao implémente ExperptsDao {...} code> est parfaitement bien depuis
ExcerptsDao code> toujours em> ne traite que
Extraits Code> Instances. P>
ExcerptsDao
ExcerptsDao code > Comme cela pourrait aussi bien être autre chose que
extrait code>. p>
Mes vous devez changer un peu comme celui-ci
public class ExcerptDAO implements ExcerptsDAO{}
Note latérale: Vous devez penser à de meilleurs noms ou à un système de dénomination différent pour les implémentations et les interfaces. IMo
ExcerptDao code> et
ExcerptSDAO code> est beaucoup trop similaire et peut provoquer une confusion.
@Thomas, oui je sais ... Je voulais faire cela une fois que je résous les aspects pratiques