2016-06-14 13 views
6

Mam podmiot. Zdefiniowałem zmienną jako boolowską i stworzyłem metody Getter i Setter ze skrótami Intellij Idea.Dlaczego domyślne szablony pobierające/ustawiające Intellij usuną mój boolowski przedrostek nazwy zmiennej "is"?

private Boolean isForLaboratory = false; 

ddasd

enter image description here

Po utworzeniu to generowana następująco:

public Boolean getForLaboratory() { 
    return isForLaboratory; 
} 

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

Spodziewałem getIsForLaboratory i setIsForLaboratory. Czy jest to ogólna konwencja dla Javy? Dlaczego Intellij usunął moje prefiksy?

+1

Boolean jest klasą wrapper, użyj prymitywnej wartości boolean pisanej małymi literami ... i tak, pominięcie jest w konwencji getter/setters. Zastanów się, czy grasz. Postanawiamy grać i grać, czy nie. – Li357

+2

To jest konwencja. IntelliJ zakłada, że ​​nazwa podstawowa to 'ForLaboratory' oraz że część' is' jest obecna tylko dlatego, że używasz wartości logicznej. Wypróbuj za pomocą 'String isForLaboratory', a zobaczysz to. –

Odpowiedz

8

Jeśli pop-up oknie dialogowym, aby Generate na Getter and Setter można zobaczyć:

Getter template: IntelliJ Default 
Setter template: IntelliJ Default 

Kliknij na przycisk po prawej Getter Template oznaczonego ... i można zobaczyć kod szablonu zawiera następujące elementy:

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

innymi słowy nie ma specjalnego traktowania dla pól zaczynających się is - a jeśli chcesz napisać swój własny szablon, można oczywiście zrobić to :)

Jak, dlaczego - nie jest standardowym JavaBeans dla logicznych polach gdzie getter dla pola o nazwie (na przykład) boolean enabled mogą być isEnabled() zamiast getEnabled(), i to na pewno z tym związane.

+0

sugestia: może zmienić nazwę swojej własności na "forLaboratory". Dlatego też getter będzie "isForLaboratory()" - na domyślny szablon. – vikingsteve

0

W wersji IntelliJ 15+ należy użyć prymitywnej wartości boolowskiej, aby funkcja IntelliJ generowała funkcję Get z prefiksem "is".

domyślny Getter Template wygląda następująco:

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

więc poprawny sposób w IntelliJ 15.x wzwyż powinno być tak:

private boolean forLaboratory = false; 

po pokoleniu Auto:

public boolean getForLaboratory() { 
    return forLaboratory; 
} 

public void isForLaboratory(boolean forLaboratory) { 
    this.forLaboratory = forLaboratory; 
} 
Powiązane problemy