2009-10-23 10 views
7

Domyślny szablon Eclipse dla nowych typów (Okno> Preferencje> Code Style> Kod Szablony> Nowy Pliki Java) wygląda następująco:W Eclipse, jak zmienić domyślne modyfikatory w szablonie klasy/typu?

 
${filecomment} 
${package_declaration} 

${typecomment} 
${type_declaration} 

Tworzenie nowej klasy, będzie to wyglądać mniej więcej tak:

package pkg; 

import blah.blah; 

public class FileName { 
    // Class is accessible to everyone, and can be inherited 
} 

teraz jestem gorliwym w moim przekonaniu, że dostęp powinien być ograniczony, jak to możliwe, i dziedziczenie powinno być zabronione, chyba że wyraźnie dozwolone, więc chciałbym, aby zmienić ${type_declaration} zadeklarować wszystkie klasy jako final zamiast public:

package pkg; 

import blah.blah; 

final class FileName { 
    // Class is only accessible in package, and can't be inherited 
} 

Wydaje się, że łatwiej powiedzieć, niż zrobić. Jedyną rzeczą, którą znalazłem, to jest 2004 question on Eclipse's mailing list, która nie została odebrana.

Krótko mówiąc, pytanie: Jak mogę zmienić domyślne modyfikatory klasy/typu w Eclipse?

Używam Eclipse Galileo (3.5), jeśli to ma znaczenie.

Odpowiedz

1

Wygląda na to, że nie jest to możliwe. Model ${type_declaration} to wewnętrzny materiał.

To, co możesz zrobić, to kliknąć za każdym razem, gdy ostateczne pole wyboru pojawi się w sekcji "Nowa klasa Java". Ale to nie jest coś, co chcesz.

+0

Masz rację. To nie jest coś, co chcę robić :) – gustafc

0

Wystarczy sprawdzić odpowiedni modyfikator dostępu podczas tworzenia nowej klasy za pomocą Kreatora nowej klasy.

New Java Class Wizard

+0

To właśnie robię dzisiaj. Chodzi o to, że nie pamięta mojego wyboru, więc zapominam o tym od czasu do czasu. – gustafc

+1

@gustafc Możesz pozwolić Checkstyle ostrzegać, jeśli go zapomnisz. – starblue

+0

@ starblue, to dobra wskazówka. Dzięki. – gustafc

0

Może to pomoże?

eclipse\plugins\org.eclipse.jdt.ui_*.jar\templates\ 

Eclipse custom variable for java code templates

+0

Niezupełnie, wydaje się, że właśnie w tym miejscu Eclipse wybiera szablony. '$ {Type_declaration}' nie istnieje. Zaczynam podejrzewać, że jest generowany, a nie deklarowany. – gustafc

1

Okay, myślę, że nie ma żadnego chłodny odpowiedź, więc co o tym "hack"?

${filecomment} 
${package_declaration} 

${typecomment} 
import invalid;/* ${type_declaration} */ 

final class ${type_name} { } 

Jeśli teraz hit Kontrola + SHIFT + O zorganizować importu, stara deklaracja typu znika. Można również dodać import organizacyjny, aby zapisać działanie w celu zautomatyzowania.

Wiem, że to źle, ale robi to, co chcesz.

+0

Cóż ... interesująca myśl. Niestety, następnie deklaruje wszystko jako "ostatnią klasę", w tym interfejsy, wyliczenia itp., I pomija wszelkie nadklasy/interfejsy, które deklaruję w kreatorze. W komentarzu muszę też umieścić '$ {type_declaration}', ponieważ nie można zapisać szablonu bez niego. – gustafc

0

Oto mój obejście:

Edytuj szablon:

${filecomment} 
${package_declaration} 

${typecomment} 
final class ${type_name} { 

    /* ${type_declaration} //delete */ 

    /** 
    * @see {@link Object#toString()} 
    * @return String representation of this instance. 
    */ 
    public String toString() { 
     return "some impl"; 
    } 

} 

Wykomentuj $ {type_declaration}, ponieważ jest to wymagane. Masz komentarz do usunięcia, ale wymaganie zostało osiągnięte. Przepraszam, jeśli jest to 2-letni wątek, ale dla mnie jest on nadal istotny.

+0

Utracona odpowiedź codevour. Zasadniczo to samo. –

Powiązane problemy