0
votes

Quelqu'un peut-il expliquer comment les paramètres fonctionnent dans la hiérarchie Java?

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 { ... }


2 commentaires

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 et ExcerptSDAO 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


3 Réponses :


1
votes

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 DAO code>). Vous avez besoin de génériques que si vous voulez faire une classe, hein, plus générique.

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>

public interface ExcerptsDAO<T> extends DAO<T>{
    public List<T> getByAuthor(String... params);
}


0 commentaires

2
votes

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, ExcerpttsDao has_no_ paramètres génériques et corrige déjà le type générique transmis à DAO pour être extrait . Donc, vous ne pouvez pas changer le paramètre et il n'est donc pas autorisé à ajouter un.

Pour résumer: Classe publique ExperptDao implémente ExperptsDao {...} est parfaitement bien depuis ExcerptsDao toujours ne traite que Extraits Instances.

Si vous le feriez ExcerptsDao Implements Dao Il fonctionnerait mais vous devrez toujours définir un paramètre de type générique pour ExcerptsDao Comme cela pourrait aussi bien être autre chose que extrait .


0 commentaires

0
votes

Mes vous devez changer un peu comme celui-ci

public class ExcerptDAO implements ExcerptsDAO{}


0 commentaires