2016-06-14 13 views
6

Ich habe eine Entität. Ich definierte Variable als Boolean und ich erstellte Getter und Setter-Methoden mit Intellij Idea Shortcuts.Warum löschen Intellijs Getter/Setter-Vorlagen mein boolesches Variablenpräfix "is"?

private Boolean isForLaboratory = false; 

ddasd

enter image description here

Nach der Erstellung es generiert dies:

public Boolean getForLaboratory() { 
    return isForLaboratory; 
} 

public void setForLaboratory(Boolean forLaboratory) { 
    isForLaboratory = forLaboratory; 
} 

I getIsForLaboratory und setIsForLaboratory erwartet. Ist es eine allgemeine Konvention für Java? Warum hat Intellij meine Präfixe gelöscht?

+1

Boolean ist eine Wrapper-Klasse, benutze Kleinbuchstaben primitive boolean .. und ja, weglassen ist in der Getter/Setter ist Konvention. Betrachten Sie IsPlaying. Wir würden auf spielen und spielen gehen oder nicht. – Li357

+2

Dies ist eine Konvention. IntelliJ geht davon aus, dass der Basisname 'ForLaboratory' lautet und dass der' is' -Teil nur vorhanden ist, weil Sie einen booleschen Wert verwenden. Versuchen Sie es mit 'String isForLaboratory' und Sie werden dies sehen. –

Antwort

8

Wenn Sie den Dialog zu Generate Pop-up der Getter and Setter können Sie sehen:

Getter template: IntelliJ Default 
Setter template: IntelliJ Default 

Klicken Sie auf die Schaltfläche rechts von Getter Template mit ... markiert und Sie können die Template-Code sehen beinhaltet folgende Leistungen:

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

mit anderen Worten gibt es eine spezielle Behandlung für Felder mit is Start - und wenn Sie Ihre eigene Vorlage schreiben möchten, können Sie natürlich tun, um diese :)

Was, warum - es ist ein Java Beans-Standard für Boolesche Felder, auf denen die Getter für ein Feld mit dem Namen (zum Beispiel) boolean enabledisEnabled() statt getEnabled() sein können, und es ist sicherlich im Zusammenhang mit diesem.

+0

Vorschlag: vielleicht benennen Sie Ihre Eigenschaft zu 'forLaboratory'. Daher wäre der Getter 'isForLaboratory()' - per Standardvorlage. – vikingsteve

0

In IntelliJ Version 15+ müssen Sie primitive boolean verwenden, damit IntelliJ eine Get-Funktion mit dem Präfix "is" generiert.

der Standard Getter Template sieht wie folgt aus:

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

So ist der richtige Weg in IntelliJ 15.x und wie diese sollten sein:

private boolean forLaboratory = false; 

nach der Auto-Generation:

public boolean getForLaboratory() { 
    return forLaboratory; 
} 

public void isForLaboratory(boolean forLaboratory) { 
    this.forLaboratory = forLaboratory; 
}