2009-01-27 19 views
10

Qualcuno sa di un metodo di plug-in o Eclipse per arrivare Eclipse per generare getter/setter su una linea come questa:Eclipse getter/formato setter

public String getAbc() { return abc; } 

Invece di

public String getAbc() { 
    return abc; 
} 

I su Eclipse v. 3.2.2.

Grazie.

risposta

12

non so come fare Eclipse li generano nel formato desiderato, ma si potrebbe fare una ricerca/sostituzione utilizzando queste espressioni regolari dopo i metodi vengono generati:

Ricerca:

(?m)((?:public |private |protected)?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 

sostituire con:

$1 $2$3($4) { $5 } 

Questa espressione trasformerà il getter e setter generati per essere una riga. Non preoccuparti di eseguirlo con una combinazione di metodi trasformati e di nuova generazione; funzionerà bene.

+0

Grazie Hosam. Preferirei idealmente un modo per fare in modo che Eclipse generi i getter su una singola riga senza dover eseguire un secondo passo. –

+0

Prego. Buona fortuna a trovarne uno. –

+0

Direi che il tuo RegEx funziona bene. Una cosa: sembra nella mia versione/config di Eclipse, l'espressione "sostituisci da" deve utilizzare i segni del dollaro anziché la barra rovesciata: $ 1 $ 2 $ 3 ($ 4) {$ 5} –

1

La formattazione del codice Java in Eclipse non distingue tra getter/setter e altri metodi in una classe. Quindi questo non può essere fatto con la formattazione di eclissi integrata.

Sarà necessario sia per:

  1. effettuare una ricerca/sostituzione con la regex citato
  2. get it plugin esterno come PMD o CheckStyle e far rispettare una regola espressione regolare sulla base di opzione precedente
0

ho voluto pubblicare come un commento alla risposta designato, ma non sembrano essere in grado di.

Ho modificato la risposta di Hosam Aly a lavorare con tipi generici e interni del modulo:

List<X> 

e

Map.Entry 

La stringa di ricerca di espressioni regolari rivisto è:

(?m)((?:public |private |protected)?[\w\.\<\>$]+) (get|set|is)([\w$]+)\(([\w\.\<\>$]+ [\w$]+)?\) \{\s+(return [\w\.\<\>$]+;|this.[\w$]+ = [\w$]+;)\s+\} 

Questa espressione regolare consente parentesi angolari e un punto nel tipo.

Ad esempio:

public List<String> getStringList() 

e

public void setStringList(List<String> list) 

e

public Map.Entry getEntry() 

E la sostituzione stringa è la stessa di prima:

$1 $2$3($4) { $5 } 
4

Credo corrispondenza generici è importante pure, così la regexp corretta è:

(?m)((?:public |private |protected)?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 
+0

Questo probabilmente dovrebbe essere stato un commento sulla risposta di Hosam Aly, non una risposta da sola. – Jules

2

Come variante del metodo di sostituzione regexp, la seguente riformatta gli spazi in modo che incastonatori sono seguiti da una linea vuota, ma getter non sono.

Ricerca:

(\s(?:get|is|set)\w+\([^)]*\))\s*\{\s*(?:([^=;}]+;)\s*\}\s*(\R)|([^=;}]+=[^=;}]+;)\s*\}\s*(\R)) 

Sostituire con:

$1 { $2$4 } \R$5 

Risultati in:

int getTotal() { return total; } 
void setTotal(int total) { this.total = total; } 

List<String> getList() { return list; } 
void setList(List<String> list) { this.list = list; } 

Map.Entry<String, Integer> getEntry() { return entry; } 
void setEntry(Map.Entry<String, Integer> entry) { this.entry = entry; } 

E 'una cosa estetica minore, ma ho pensato che se siete alla ricerca di un rispondi a questa domanda, quindi probabilmente sei (quasi) anale come me ;-)

So che le mie condizioni regexp non sono rigide come quelle di @Hosam, ma non ho riscontrato sostituzioni "false positive".

+0

fantastico, proprio quello che sto cercando! –

+0

risposta più grande (provato tutti quelli in questa pagina) – ismail