8
votes

Eclipse: Comment générer automatiquement Getter lors de l'ajout d'un champ?

J'utilise TDD et j'ai un motif de codage très typique, à l'aide de méthodes et de champs Eclipse sur autocréate, car je code le test de l'unité. Par exemple:

  1. Type Nom de la méthode qui n'existe pas, E.g:

    myObj.setvalue (quelqueévalue);

  2. Cliquez sur la marque d'erreur rouge dans l'EDI pour créer la méthode "SETVALUE".

  3. Type à l'intérieur de la méthode SETVALUE:

    Voyant public SETVALUE (valeur de chaîne) { cela.Value = valeur; }

  4. Cliquez sur la marque d'erreur rouge pour créer automatiquement un champ privé (appelé "valeur dans ce cas");

    Ainsi, à ce stade, j'aimerais que Eclipse crée automatiquement la méthode Getter, sans avoir à le faire à l'aide de la Source -> Générer des getters et des Setters menu.

    J'ai vu cette question: Comment forcez-vous Eclipse pour vous inviter à créer un getter et un setter lorsqu'il ne le fait pas automatiquement qui semble impliquer que Eclipse le fait, mais je ne pouvais pas Trouvez où configurer cela.

    existe-t-il un moyen de configurer Eclipse pour ajouter automatiquement Setter / Getters lors de l'ajout d'une nouvelle variable privée?

    mise à jour : Pour clarifier plus loin, je cherche quelque chose comme je l'ai vu dans le Documentation Spring Roo . Si vous regardez la section "Comment ça marche", il décrit comment le cadre ajoute automatiquement des méthodes supplémentaires à votre classe, chaque fois que vous ajoutez une variable privée. (Mes préférences ne veulent pas exécuter un autre processus comme celui-ci, cependant, et non pas pour obtenir tout le CRUFT qu'il semble ajouter). J'espérais que Eclipse avait quelque chose de similaire.


3 commentaires

Par curiosité, si vous utilisez TDD, pourquoi créer le getter avant qu'il ne soit nécessaire? Mais si vous placez le curseur après (ou auparavant) la méthode définie, écrivez-vous, puis de contrôler l'espace, vous devez obtenir une suggestion pour un getter (pas exactement ce que vous avez demandé).


@ Rogerlindsjö: C'est une bonne question. La réponse principale est la suivante: j'ai ajouté à mes préférences Préférences / actions L'action pour "supprimer des types privés non utilisés", donc lorsque je sauvegarde (ce qui arrive lorsque j'exécute le test de l'unité pour le voir échouer), Eclipse Enlève le champ que je viens de créer (car il n'est pas encore référencé), ce qui me faisait retaper de nouveau. Il semble donc que le meilleur flux consiste à simplement créer le getter à ce moment-là. Aussi - généralement, je trouve que si je crée un seigter, j'ai généralement besoin de getter plus tard. Cela semble donc aussi comme une bonne convention que je le crée à ce moment lorsque je crée le réglage dans tous les cas.


Cela l'explique alors. Avait aussi ce réglage, mais je n'ai pas aimé cela, alors maintenant, j'ai maintenant des députés privés inutilisés comme des avertissements et gardons des avertissements à zéro avant de commetter (mais les acceptent pendant le travail).


5 Réponses :


16
votes

Lorsque vous déplacez votre souris au-dessus du nom de la variable, vous pouvez sélectionner "Créer getter and Setter for Varname" dans le menu contextuel.

ou vous pouvez vous créer un raccourci pour le faire. Préférences -> Général -> Touches. Dans la zone de recherche, vous entrez "getter", puis vous le trouverez.


1 commentaires

Au moins dans Eclipse Helios, vous ne pouvez pas sélectionner Créer un getter et Setter si vous avez déjà créé le Setter lorsque vous déplacez la souris sur la variable.



3
votes

hmm ... Dunno Si c'est ce que vous recherchez, mais si je crée un champ dans une classe, il y a un avertissement que le champ n'est pas utilisé. Si je clique sur le signe d'avertissement, l'option pour générer un getter et un setter pour le champ apparaît:

Entrez la description de l'image ici


0 commentaires

1
votes

Je ne pense pas que cette question implique que toutes les réponses ont donné une solution manuelle.

AFAIK Il n'est pas possible de faire automatiquement sans plugin, et je ne connais pas d'un plugin qui le fait.

J'utilise un modèle pour créer des artefacts comme celui-là tout à la fois, mais je ne suivez pas le même chemin - je ne suis pas sûr qu'une solution de modèle fonctionnerait si un getter ou un réglage existait déjà, car je ne suis pas Bien sûr, vous pouvez vérifier la présence d'une méthode et faire des décisions de modèle en fonction de cela. Peut-être que vous pouvez.


0 commentaires

10
votes

Essayez ceci, cela fonctionne comme du beurre xxx


0 commentaires

5
votes

Je fais un peu différemment.

  • Créez d'abord la variable: (disons privé int threadsinpool = 3 code>). Li>
  • Placez le curseur sur le nom de la variable (disons threadsinpool code>) li>
  • Appliquez ce raccourci: alt kbd> + shift kbd> + s kbd>, r kbd> ( appuyez sur la dernière R KBD> après un léger délai i>) li>
  • Appuyez simplement sur Entrée lorsque Générez des getters and Setters i> la boîte de dialogue apparaît et voya! Li> ul>

    EDIT: strong> Vous pouvez également essayer d'utiliser annotations Lombok : P>

    @Getter @Setter private String value;
    


0 commentaires