C'è un modo per generare automaticamente getter e setter in Eclipse?


256

Sto lavorando a un nuovo Androidprogetto ( Java) e ho creato un oggetto con un gran numero di variabili. Dal momento che ho intenzione di aggiungere getter e setter per tutti loro, mi chiedevo: c'è una scorciatoia Eclipseper generare automaticamente getter e setter in una data classe?


1
Sembra uno stalker per me ... Ero solito fare tutta la programmazione Java senza un IDE, quindi usare Eclipse è ancora relativamente nuovo per me.
Phil

3
@krio - Il mondo intero non usa Eclipse per sviluppatori Java. Ho svolto gran parte del mio lavoro in IntelliJ e mi sono ritrovato a fare molte domande come questa una volta che ho iniziato a lavorare in Eclipse.
vcsjones,

1
@Phil, vcsjones - davvero vere scuse ma date un'occhiata, - google.com.au/… - Immagino che stackoverflow dica che la ricerca è importante
TeaCupApp,

2
è il modo più veloce: ctrl + 3 ggas
dellasavia

1
@Konstantin che dice solo per evitare di usarli nella stessa classe, quindi non chiamare this.getCount(), quando puoi semplicemente fare riferimento this.mCount. Sebbene possa essere un'operazione più costosa, è un approccio più pulito per fornire l'accesso a variabili di altri oggetti tramite getter e setter.
Phil

Risposte:


357

Visualizzate il menu di scelta rapida (ovvero il tasto destro del mouse) nella finestra del codice sorgente della classe desiderata. Quindi selezionare il Sourcesottomenu; da quel menu la selezione Generate Getters and Setters...farà apparire una finestra della procedura guidata.

Source -> Generate Getters and Setters...

Selezionare le variabili per cui si desidera creare getter e setter e fare clic OK.


Esiste solo "Genera commento elemento", niente getter e setter. Sto usando Eclipse 4.4.0, plugin PDT installato. Nel frattempo questo può essere usato - mikeangstadt.name/projects/getter-setter-gen .
Xdg,

Funziona alla grande su Eclipse Mars.2 Release (4.5.2). Grazie.
this.user3272243

Grazie per avermi salvato circa un milione di anni di noia!
Jay Edwards,

11
Puoi anche accedere a questo sottomenu con la scorciatoia da tastiera SHIFT+ ALT+ S, quindi aprire le opzioni Genera getter e setter premendo R.
Rosa,

Divertente come la mia risposta qui sia diventata così popolare, ma in questi giorni userei semplicemente Lombok , come notato da altri qui sotto.
Hagai Cibulski,

70

In Eclipse Juno, per impostazione predefinita, ALT + MAIUSC + S, R apre la finestra di dialogo getter / setter. Nota che devi premere tutti e 4 i tasti.


5
È possibile tralasciare la parte MAIUSC e fare semplicemente ALT + S, R.
Jason Wheeler,

2
Non puoi uscire da SHIFTEclipse Kepler
yellavon,

Puoi uscire da SHIFTEclipse Oxygen.
Jake Reece,

Non puoi uscire da SHIFTEclipse 2018-12.
Neph,


41

Tutte le altre risposte si concentrano solo sul livello IDE, questi non sono il modo più efficace ed elegante per generare getter e setter. Se hai decine di attributi, i metodi getter e setter pertinenti renderanno il tuo codice di classe molto dettagliato.

Il modo migliore che abbia mai usato per generare automaticamente getter e setter è usare le annotazioni di project lombok nel tuo progetto java , lombok.jar genererà il metodo getter e setter quando compili il codice java.

Ti concentri solo sugli attributi di classe / denominazione e definizione delle variabili, lombok farà il resto. È facile mantenere il tuo codice.

Ad esempio, se si desidera aggiungere il metodo getter e setter per la agevariabile, è sufficiente aggiungere due annotazioni lombok:

@Getter @Setter 
public int age = 10;

Ciò equivale a un codice del genere:

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

Puoi trovare maggiori dettagli su lombok qui: Progetto Lombok


1
Questo è tutto! Grazie mille! In realtà, la tua risposta dovrebbe essere al top, dal momento che lombok è l'unica vera soluzione per evitare di vedere tutto il codice Java del plateplate che uno dovrebbe generare o scrivere. Grazie!
Stefan Endrullis,

2
Il progetto Lombok (o almeno l'idea) dovrebbe far parte di Java 11. Uso Kotlin per le classi Pojo solo per sfuggire alla generazione di setter getter: /
Wolf359

31

Modi per generare Getter e setter -

1) Premere Alt+ Shift+ S, quindiR
2) Fare clic con il pulsante destro del mouse -> Sorgente -> Genera getter e setter
3) Vai al menu Sorgente -> Genera getter e setter
4) Vai al menu Windows -> Preferenze -> Generale -> Tasti (Scrivi Genera Getter e setter sul campo di testo)
5) Fai clic sulla lampadina dell'errore del campo -> crea getter e setter ...
6) Premi Ctrl+3 e scrivi getter e setter sul campo di testo, quindi seleziona l'opzione Genera Getter e setter

se Mac OS premi Alt + cmd + S quindi seleziona Getter e setter


2
Penso che 1 sia un po 'più semplice in questo modo: 1) Premi Alt + Maiusc + S, quindi R
Paco Abato

1
Premendo Ctrl-3 e subito dopo digitando "getter" manca dall'elenco. Molto più facile da ricordare rispetto a scorciatoie specifiche, poiché funziona per ogni comando, vista e così via.
Bananeweizen,

@ Bananeweizen - Grazie
Deepak Gupta

11

Fare clic con il pulsante destro del mouse-> genera getter e setter fa bene il lavoro, ma se si desidera creare una scorciatoia da tastiera in eclissi in Windows, è possibile seguire i seguenti passi:

  1. Vai a Finestra> Preferenze
  2. Vai a Generale> Chiavi
  3. Elenco per "Quick Assist - Crea getter / setter per il campo"
  4. Nel campo di testo "Rilegatura" di seguito, tieni premuti i tasti desiderati (nel mio caso, utilizzo ALT + MAIUSC + G)
  5. Premi Applica e Ok
  6. Ora nel tuo editor Java, seleziona il campo per cui desideri creare i metodi getter / setter e premi il collegamento che hai impostato nel passaggio 4. Premi ok in questa finestra per creare i metodi.

Spero che questo ti aiuti!


9

Sicuro.

Usa Genera Getter e setter dal menu Sorgente o dal menu contestuale su un campo o tipo selezionato, oppure una selezione di testo in un tipo per aprire la finestra di dialogo. La finestra di dialogo Genera getter e setter mostra getter e setter per tutti i campi del tipo selezionato. I metodi sono raggruppati in base ai campi del tipo.

Dai un'occhiata alla documentazione di aiuto per maggiori informazioni.


8

Sì. Fare clic con il tasto destro del mouse sul codice per visualizzare un menu; c'è "Sorgente", "Genera getter e setter" e accanto ad esso puoi vedere il collegamento, che è Alt + Maiusc + S e R sul mio sistema.

Allo stesso modo è possibile navigare verso altri sottomenu in quel menu principale, digitando il collegamento appropriato si passa direttamente al sottomenu anziché al menu contestuale principale, quindi è possibile scegliere dal menu o digitare un'altra lettera per scegliere dall'elenco.



7

Preferisco creare prima il campo privato

private String field;

Eclipse evidenzierà automaticamente la variabile, posizionando il cursore sulla tua nuova variabile, premi Ctrl + 1. Ti darà quindi il menu per creare getter e setter.

Premo Ctrl + 1 perché è un po 'più intelligente su ciò che penso che tu voglia dopo.


5

Premi Alt + Maiusc + S + R ... quindi seleziona solo quali campi devi generare Getter o setter o entrambi


5
  • Per Tutte le variabili ALT + MAIUSC + S Quindi R e per selezionare tutte Premere ALT + A

  • Per il cursore Punto singolo variabile sulla variabile, premi CTRL + 1 e scegli la seconda opzione dai suggerimenti

Immagine dello schermo


Grazie, questo è quello che stavo cercando.
Shams Nahid,

4

È disponibile un jar open source noto come Lombok , basta aggiungere jar e quindi annotare il POJO con @Getter & @Setter che creerà automaticamente getter e setter.

Oltre a questo possiamo usare altre funzionalità come @ToString , @EqualsAndHashCode e altre cose interessanti che rimuovono il codice vanilla dalla tua applicazione



3

** In Eclipse Ide

per generare sia setter che getter -> alt + maiusc + s + r poi Alt A quindi fare clic su ok;

per generare solo getter -> alt + maiusc + s + r quindi premere g quindi fare clic sul pulsante ok;

per generare solo setter -> alt + maiusc + s + r quindi premere l quindi fare clic sul pulsante ok; **


2

Fare clic con il tasto destro sulla proprietà per cui si desidera generare il getter e i setter e scegliere

Source -> Generate Getters and Setters...

2

1) Vai su Windows-> Preferenze-> Generale-> Tasti

2) Seleziona command" Genera getter e setter "

3) In Binding, premi la scorciatoia per usare (come Alt + Maiusc + G )

4) Fai clic su Applica e sei a posto


1
  1. Apri il file di classe in Eclipse
  2. Fare doppio clic sul nome della classe o evidenziarlo
  3. Quindi vai a Sorgente -> Inserisci codice
  4. Fai clic su Getter e Setter

Apre un popup per selezionare i campi per i quali generare i metodi getter / setter. Seleziona i campi e fai clic sul pulsante "Genera". inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine


1

Usa Project Lombok o Kotlin migliore per i tuoi Pojos.

(Inoltre, per aggiungere Kotlin al tuo curriculum;))

Questo :

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
}

diventerebbe questo:

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()

Oppure usa le classi di "dati" di Kotlin. Finisci per scrivere ancora meno righe di codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.