11
votes

Comment générer des constructeurs à Eclipse

J'ai une classe A et BM s'étend A. Maintenant, je veux créer un constructeur d'un constructeur d'une option de génération de code d'Eclipse qui accepte les paramètres et définir des valeurs de tous les champs de B (je veux dire qu'il devrait également définir des champs hérités d'un ).

Y a-t-il un raccourci pour générer un tel code dans Eclipse?


0 commentaires

3 Réponses :


6
votes

Eclipse (3.5) n'a pas d'option intégrée pour ce cas particulier, mais je voudrais toutefois suggérer que vous avez un constructeur distinct dans la super classe forte>, que la sous-classe invoque à travers Super (...) code> dans son constructeur.

Ce serait plus facile à maintenir. Si vous ajoutez par exemple un fichier déposé dans la super classe, vous devez vous rappeler de mettre à jour la sous-classe également. P>

class A {
    int i;
    public A(int i) { this.i = i; }
}

class B extends A {
    int j;
    public B(int i, int j) {
        super(i);
        this.j = j;
    }
}


0 commentaires

22
votes

Cliquez avec le bouton droit de la souris sur l'éditeur et cliquez sur "Source -> Générer constructeur à l'aide de champs". Vous pouvez sélectionner le super constructeur à utiliser et sélectionner également des variables d'instance à ajouter au constructeur.


2 commentaires

Mais il ne générera pas d'initialisation pour les membres publics / protégés de la superque, que je suppose, c'est ce que l'OP est après.


@AIOOBE - D'accord, c'était le point principal de la question d'Akshay.



2
votes

Il n'y a pas de moyen automatique de le faire et je suis proche de croire que l'équipe Eclipse l'a fait exprès comme cela conduirait à une mauvaise conception.

Construire une classe concerne l'initialisation des objets posséder uniquement les champs . Si vous devez définir des champs (Init) sur la superclasse, appelez le constructeur SuperClasses, si vous devez modifier des champs Superclass, appelez les méthodes Superclasses Getter et Setter.

Pour moi, c'est une mauvaise conception pour init des champs de superclasse et peut être évité facilement.


0 commentaires