2009-11-23 17 views
23

Comment pouvez-vous obtenir IntelliJ pour générer getter/setters sur une ligne comme celle-ci:IntelliJ getter/setter Format

public String getAbc() { return abc; } 

Au lieu de

public String getAbc() { 
    return abc; 
} 

??

Répondre

11

Il n'y a pas de gabarit ni pour les getters ni pour les égales/hashcode. Ceux-ci sont codés en dur dans IDEA.

Source

Vous pouvez voir que dans cette IntelliJ Wishlist

+3

Il y a maintenant (j'utilise Ultimate 2016) - voir les réponses ci-dessous – werner

10

Vous n'avez pas mentionné quelle version d'IDEA que vous utilisez, donc je suppose que la récente 8 ou 9.

Vérifiez vos paramètres de code de style, sous la rubrique « Alignement et Accolades ». Vous devriez trouver une option "Méthodes simples sur une ligne".

+0

Nous sommes 8.1.3. Cela n'a pas semblé fonctionner si .. –

+0

Avez-vous essayé de décocher la case "sauts de ligne" dans le groupe "Keep When Reformatting"? – seh

+3

Le paramètre d'une ligne indique à IntelliJ de le laisser ainsi dans un reformatage, mais pas de le créer de cette façon. –

9

Je ne sais pas pourquoi vous voulez faire cela, sans doute pour économiser de l'espace visuel. Si c'est le cas, utilisez simplement la fonction d'IntelliJ pour plier les getters/setters triviaux et oublier la façon dont les lignes sont prises. fonction de pliage peut être trouvée dans

Paramètres -> Paramètres IDE -> Editeur -> Code de Folding -> Afficher le code contour pliant -> Propriété simple accesseurs

26

J'utilise IntelliJ IDEA 14.1.0 et vous le pouvez Personnalisez ce comportement.

Il suffit d'utiliser le "Générer ..." option ou utiliser Alt +Insérer raccourci, et sélectionnez "getter et setter".

Dans la fenêtre "Select Fields" qui s'ouvre, vous avez l'option "Getter Template" en haut. Utilisez le bouton "..." à côté de la liste déroulante pour éditer le modèle.

Sélectionnez "IntelliJ Default" et cliquez sur le bouton "Copier" pour en créer un nouveau nommé "AlwayStartWithGet", que vous pouvez modifier.

Il suffit de retirer la section suivante:

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

et le remplacer par un simple

get## 

Vous devez être laissé avec:

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

Maintenant, vous pouvez utiliser le modèle personnalisé lors de la génération du code, en le sélectionnant dans la liste déroulante du modèle getter.

+0

Cela semble prometteur mais je ne vois pas un bouton de modèle Getter en haut de cette boîte de dialogue. En utilisant 14.0.2. – Gervase

+2

A travaillé pour moi, mais pour être précis la dernière partie du modèle devrait ressembler à: '$ {name}() {return $ field.name; } ' dans une ligne –

+4

Assurez-vous de vérifier également les paramètres/code Style/Java/blocs simples dans une ligne et méthodes simples dans une ligne. Sinon, la mise en forme automatique remettra les lignes et vous ne verrez aucun effet après la modification du modèle ... – werner

3

Pour l'idée 2016.

modèle de Getter

Fusionner les 3 dernières lignes en une seule ligne:

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

modèle Setter

Ajouter à double hachage (sans espace) à la fin de la la plus longue ligne:

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

fusionner les 2 dernières lignes en une seule ligne:

$field.name = $paramName; } 

Note: comme commenté par @mindas, vous voudrez probablement plutôt le pliage automatique visuel qui ne soit pas versionné.