Existe-t-il un moyen de générer automatiquement des getters et setters dans Eclipse?


256

Je travaille sur un nouveau Androidprojet ( Java), et créé un objet avec un grand nombre de variables. Étant donné que je prévois d'ajouter des getters et des setters pour chacun d'eux, je me demandais: existe-t-il un raccourci Eclipsepour générer automatiquement les getters et setters dans une classe donnée?


1
Cela ressemble à un harceleur pour moi ... Je faisais juste toute la programmation Java sans IDE, donc utiliser Eclipse est encore relativement nouveau pour moi.
Phil

3
@krio - Le monde entier n'utilise pas Eclipse pour Java dev. J'ai fait la plupart de mon travail dans IntelliJ et je me suis retrouvé à poser beaucoup de questions comme celle-ci une fois que j'ai commencé à travailler dans Eclipse.
vcsjones

1
@Phil, vcsjones - très vrai mes excuses mais vérifiez ceci, - google.com.au/… - Je suppose que stackoverflow dit que la recherche est importante
TeaCupApp

2
c'est le moyen le plus rapide: ctrl + 3 ggas
dellasavia

1
@Konstantin qui dit simplement d'éviter de les utiliser dans la même classe, alors n'appelez pas this.getCount(), quand vous pouvez simplement faire référence this.mCount. Bien que cela puisse être une opération plus coûteuse, il s'agit d'une approche plus propre pour fournir l'accès aux variables d'autres objets via des getters et setters.
Phil

Réponses:


357

Affichez le menu contextuel (c'est-à-dire clic droit) dans la fenêtre de code source de la classe souhaitée. Sélectionnez ensuite le Sourcesous - menu; à partir de ce menu Generate Getters and Setters..., une fenêtre d'assistant apparaîtra.

Source -> Generate Getters and Setters...

Sélectionnez les variables pour lesquelles vous souhaitez créer des getters et setters et cliquez sur OK.


Il n'y a que «Générer un commentaire d'élément», pas de Getters et Setters. J'utilise Eclipse 4.4.0, plugin PDT installé. En attendant, cela peut être utilisé - mikeangstadt.name/projects/getter-setter-gen .
Xdg

Fonctionne très bien sur la version Eclipse Mars.2 (4.5.2). Merci.
this.user3272243

Merci de m'avoir sauvé environ un million d'années d'ennui!
Jay Edwards

11
Vous pouvez également accéder à ce sous-menu avec le raccourci clavier SHIFT+ ALT+ S, puis ouvrir les options Generate Getters and Setters en appuyant sur R.
Rosa

C'est drôle comme ma réponse est devenue si populaire, mais ces jours-ci, j'utiliserais simplement Lombok , comme indiqué par d'autres ci-dessous.
Hagai Cibulski

70

Dans Eclipse Juno, par défaut, ALT + MAJ + S, R ouvre la boîte de dialogue getter / setter. Notez que vous devez appuyer sur les 4 touches.


5
Vous pouvez omettre la partie SHIFT et faire simplement ALT + S, R également.
Jason Wheeler

2
Vous ne pouvez pas laisser de côté SHIFTdans Eclipse Kepler
yellavon

Vous pouvez laisser de côté SHIFTdans Eclipse Oxygen.
Jake Reece

Vous ne pouvez pas laisser de côté SHIFTdans Eclipse 2018-12.
Néph


41

Toutes les autres réponses se concentrent uniquement sur le niveau IDE, ce ne sont pas la manière la plus efficace et élégante de générer des getters et des setters. Si vous avez des dizaines d'attributs, les méthodes getters et setters pertinentes rendront votre code de classe très détaillé.

La meilleure façon que j'ai jamais utilisée pour générer automatiquement des getters et des setters est d'utiliser les annotations de projet lombok dans votre projet java , lombok.jar générera la méthode getter et setter lorsque vous compilerez du code java.

Vous vous concentrez uniquement sur le nom et la définition des attributs / variables de classe, lombok fera le reste. Il est facile de maintenir votre code.

Par exemple, si vous souhaitez ajouter la méthode getter et setter pour la agevariable, vous ajoutez simplement deux annotations lombok:

@Getter @Setter 
public int age = 10;

C'est égal à du code comme ça:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

Vous pouvez trouver plus de détails sur lombok ici: Project Lombok


1
C'est tout! Merci beaucoup! En fait, votre réponse devrait être au top, car lombok est la seule vraie solution pour éviter de voir tout le code Java passe-partout qu'il faudrait générer ou écrire. Merci!
Stefan Endrullis

2
Le projet Lombok (ou du moins l'idée) devrait faire partie de Java 11. J'utilise Kotlin pour les classes Pojo uniquement pour échapper à la génération de setter getter: /
Wolf359

31

Façons de générer des Getters & Setters -

1) Appuyez sur Alt+ Shift+ S, puisR
2) Cliquez avec le bouton droit -> Source -> Générer des Getters & Setters
3) Allez dans le menu Source -> Générez des Getters & Setters
4) Allez dans le menu Windows -> Préférences -> Général -> Clés (Write Generate Getters & Setters sur le champ de texte)
5) Cliquez sur le bulbe d'erreur du champ -> créer des getters & setters ...
6) Appuyez sur Ctrl+3 et écrivez les getters & setters sur le champ de texte puis sélectionnez l'option Generate Getters & Setters

si Mac OS appuyez sur Alt + cmd + S, puis sélectionnez Getters & Setters


2
Je pense que 1 c'est un peu plus facile de cette façon: 1) Appuyez sur Alt + Maj + S, puis R
Paco Abato

1
Appuyer sur Ctrl-3 et directement après taper "getter" est absent de la liste. Beaucoup plus facile à retenir que des raccourcis spécifiques, car cela fonctionne pour chaque commande, vue, etc.
Bananeweizen

@ Bananeweizen - Merci
Deepak Gupta

11

Clic droit-> générer des getters et setters fait bien l'affaire mais si vous voulez créer un raccourci clavier dans eclipse dans windows, vous pouvez suivre les étapes suivantes:

  1. Allez dans Fenêtre> Préférences
  2. Allez dans Général> Clés
  3. Liste pour "Aide rapide - Créer un getter / setter pour le champ"
  4. Dans le champ de texte "Liaison" ci-dessous, maintenez les touches souhaitées (dans mon cas, j'utilise ALT + MAJ + G)
  5. Appuyez sur Appliquer et OK
  6. Maintenant, dans votre éditeur Java, sélectionnez le champ pour lequel vous souhaitez créer des méthodes getter / setter et appuyez sur le raccourci que vous avez configuré à l'étape 4. Appuyez sur ok dans cette fenêtre pour créer les méthodes.

J'espère que cela t'aides!


9

Sûr.

Utilisez Generate Getters and Setters depuis le menu Source ou le menu contextuel sur un champ ou un type sélectionné, ou une sélection de texte dans un type pour ouvrir la boîte de dialogue. La boîte de dialogue Générer des getters et setters affiche des getters et setters pour tous les champs du type sélectionné. Les méthodes sont regroupées par champs du type.

Jetez un œil à la documentation d'aide pour plus d'informations.


8

Oui. Faites un clic droit sur le code et vous voyez un menu contextuel; là "Source", "Générer des Getters et Setters" et à côté, vous pouvez voir le raccourci, qui est Alt + Shift + S et R sur mon système.

De même, vous pouvez naviguer vers d'autres sous-menus dans ce menu principal, en tapant le raccourci approprié, vous allez directement dans le sous-menu au lieu du menu contextuel principal, puis vous pouvez choisir dans le menu ou saisir une autre lettre à choisir dans la liste.



7

Je préfère d'abord créer le champ privé

private String field;

Eclipse mettra automatiquement en surbrillance la variable, en positionnant le curseur sur votre nouvelle variable, appuyez sur Ctrl + 1. Il vous donnera alors le menu pour créer getter et setter.

J'appuie sur Ctrl + 1 parce que c'est un peu plus intelligent sur ce que je pense que vous voulez ensuite.


5

Appuyez sur Alt + Maj + S + R ... puis sélectionnez uniquement tous les champs dont vous disposez pour générer des Getters ou Setters ou les deux


5
  • Pour toutes les variables ALT + SHIFT + S puis R et pour tout sélectionner Appuyez sur ALT + A

  • Pour une variable unique Pointez le curseur sur la variable, puis appuyez sur CTRL + 1 et optez pour la deuxième option parmi les suggestions

Capture d'écran


Merci, c'est ce que je cherchais.
Shams Nahid

4

Il existe un pot open source connu sous le nom de Lombok , il vous suffit d'ajouter un pot et d'annoter votre POJO avec @Getter & @Setter, il créera automatiquement des getters et des setters.

En dehors de cela, nous pouvons utiliser d'autres fonctionnalités comme @ToString , @EqualsAndHashCode et d'autres trucs sympas qui suppriment le code vanille de votre application



3

** Dans Eclipse Ide

pour générer à la fois des setters et des getters -> alt + shift + s + r puis Alt A puis cliquez sur ok;

pour générer uniquement des getters -> alt + shift + s + r puis appuyez sur g puis cliquez sur le bouton ok;

pour générer uniquement des setters -> alt + shift + s + r puis appuyez sur l puis cliquez sur le bouton ok; **


2

Faites un clic droit sur la propriété pour laquelle vous souhaitez générer le getter et les setters et choisissez

Source -> Generate Getters and Setters...

2

1) Allez dans Windows-> Préférences-> Général-> Clés

2) Sélectionnez command" Générer des Getters et Setters "

3) Dans le Binding, appuyez sur le raccourci pour utiliser (comme Alt + Maj + G )

4) Cliquez sur Appliquer et vous êtes prêt à partir


1
  1. Ouvrez le fichier de classe dans Eclipse
  2. Double-cliquez sur le nom de la classe ou mettez-le en surbrillance
  3. Ensuite, accédez à Source -> Insérer un code
  4. Cliquez sur Getter and Setter

Il ouvre une fenêtre contextuelle pour sélectionner les champs pour lesquels les méthodes getter / setter doivent être générées. Sélectionnez les champs et cliquez sur le bouton "Générer". entrez la description de l'image icientrez la description de l'image ici


1

Utilisez Project Lombok ou mieux Kotlin pour vos Pojos.

(Aussi, pour ajouter Kotlin à votre CV;))

Ce :

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

deviendrait ceci:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

Ou utilisez les classes "données" de Kotlin. Vous finissez par écrire encore moins de lignes de code.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.