2009-11-23 8 views
23

come si può ottenere IntelliJ per generare getter/setter su una linea come questa:IntelliJ getter/setter formato

public String getAbc() { return abc; } 

Invece di

public String getAbc() { 
    return abc; 
} 

??

risposta

11

Non ci sono modelli né per getter né per equals/hashcode. Questi sono hardcoded in IDEA.

Source

Si può vedere che in questo IntelliJ Wishlist

+3

Ci sono ora (io uso Ultimate 2016) - vedi le risposte sotto – werner

10

Lei non ha menzionato quale versione di IDEA che si sta utilizzando, quindi immagino che la recente 8 o 9.

Controllare le impostazioni del codice di stile, sotto "Allineamento e bretelle". Lì dovresti trovare l'opzione "Metodi semplici in una riga".

+0

Siamo 8.1.3. Tuttavia, non sembra funzionare .. –

+0

Hai provato a deselezionare la relativa casella "Interruzioni di riga" nel gruppo "Keep When Reformatting"? – seh

+3

L'impostazione a riga singola indica a IntelliJ di lasciarlo in questo modo su un reformat, ma non di crearlo in quel modo. –

9

Non so perché si vuole fare questo, presumibilmente per risparmiare spazio visivo. Se è così, basta usare la funzione di IntelliJ per chiudere getters/setter banali e dimenticare come le linee ci vogliono. caratteristica pieghevole può essere trovato in

Impostazioni -> Impostazioni IDE -> Editor -> Codice pieghevole -> Visualizza codice di struttura pieghevole -> Proprietà di accesso semplice

26

sto usando IntelliJ IDEA 14.1.0 e si può personalizzare questo comportamento.

Basta utilizzare l'opzione "Genera ..." oppure usa Alt +Inserire di scelta rapida e selezionare "getter e setter".

Nella finestra "Seleziona campi" che viene aperta, è disponibile l'opzione "Modello Getter" nella parte superiore. Utilizza il pulsante "..." accanto al menu a discesa, per modificare il modello.

Selezionare "IntelliJ Default" e fare clic sul pulsante "Copia" per crearne uno nuovo denominato "AlwayStartWithGet", che è possibile modificare.

Basta togliere la sezione seguente:

#if ($field.boolean) 
    #if ($StringUtil.startsWithIgnoreCase($name, 'is')) 
    #set($name = $StringUtil.decapitalize($name)) 
    #else 
    is## 
#end 
#else 
    get## 
#end 

e sostituirlo con un semplice

get## 

Si dovrebbe essere lasciato con:

publiC## 
#if($field.modifierStatic) 
    statiC## 
#end 
$field.type ## 
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) 
get## 
${name}() { 
    return $field.name; 
} 

Ora è possibile utilizzare il modello personalizzato durante la generazione del codice, selezionandolo nel menu a tendina getter template.

+0

Questo sembra promettente, ma non vedo un pulsante modello Getter nella parte superiore di questa finestra di dialogo. Utilizzando 14.0.2. – Gervase

+2

Ha funzionato per me, ma per essere precisi l'ultima parte del modello dovrebbe essere simile a: '$ {nome}() {return $ field.name; } ' in una riga –

+4

Assicurarsi di controllare anche Impostazioni/codice Stile/Java/Blocchi semplici in una riga e Metodi semplici in una riga. Altrimenti, la formattazione automatica inserirà nuovamente le linee e non vedrai alcun effetto dopo aver modificato il modello ... – werner

3

Per Idea 2016.

modello Getter

Unire le ultime 3 linee in una sola riga:

${name}() { return $field.name; } 

modello Setter

Aggiungi doppio hash (senza spazio) alla fine del linea più lunga:

[...] ($field.type, $paramName) {## 

fondere le ultime 2 righe in un'unica riga:

$field.name = $paramName; } 

Nota: come commentato da @mindas, probabilmente si vuole invece la piegatura automatica visiva che non viene versione.