Dzięki oknu Tworzenie nowej klasy i szablonom plików Android Studio pozwala szybko tworzyć te nowe klasy i typy:
- klasy Java,
- Wyliczenia i klasy singleton
- Interfejs i typy adnotacji
Po wypełnieniu pól w oknie Create New Class (Utwórz nową klasę) i kliknięciu OK (OK) Android Studio utworzy plik .java
zawierający kod szablonowy, w tym instrukcję pakietu, niezbędne importy, nagłówek i deklarację klasy lub typu. Następnie możesz dodać do tego pliku swój kod.
Szablony plików określają sposób generowania przez Android Studio kodu szkieletu. Szablony plików udostępnione w Android Studio możesz stosować w niezmienionej formie lub dostosowywać je do potrzeb procesu programowania.
Wyświetlanie i dostosowywanie szablonów plików
Android Studio udostępnia szablony plików, które określają sposób tworzenia nowych typów i klas Javy za pomocą okna Utwórz nową klasę. Możesz je dostosować.
Rysunek 1 Okno Utwórz nowe zajęcia.
Szablony plików w Android Studio zawierają kod języka szablonów Velocity (VTL) oraz zmienne, które obsługują te dodatkowe opcje. W oknie Utwórz nową klasę używane są szablony plików AnnotationType, Class, Enum, Interface i Singleton.
Aby wyświetlić szablony, znaleźć dostosowania i je zmodyfikować:
Wykonaj jedną z tych czynności:
- W przypadku systemu Windows lub Linux wybierz Plik > Ustawienia > Edytowanie > Plik i kod > Szablony > Pliki.
- W przypadku systemu macOS wybierz Android Studio > Preferencje > Edytor > Plik i kod > Szablony > Pliki.
Na liście szablonów nazwy wewnętrzne szablonów są wyświetlane pogrubioną czcionką. Nazwy niestandardowych szablonów są wyświetlane w wyróżnionym kolorze, np. niebieskim.
W razie potrzeby dostosuj szablony plików.
Jeśli chcesz używać pól w oknie Utwórz nową klasę, upewnij się, że zmiany są zgodne z kodem szablonu pliku w Android Studio.
Więcej informacji o szablonach plików, w tym o VTL, znajdziesz w artykułach Szablony plików i kodu oraz Szablony plików i kodu – okno dialogowe.
Tworzenie klasy lub typu Java
Android Studio pomaga tworzyć nowe klasy Java, typy enumeracji i singletonów oraz typy interfejsów i adnotacji na podstawie szablonów plików.
Aby utworzyć nową klasę lub typ Java:
- W oknie Projekt kliknij prawym przyciskiem myszy plik lub folder Java i wybierz Nowy > Klasa Java.
- W oknie Utwórz nowe zajęcia wypełnij pola:
- Nazwa – nazwa nowej klasy lub typu. Musi być zgodna z wymaganiami dotyczącymi nazw w języku Java. Nie wpisuj rozszerzenia nazwy pliku.
- Rodzaj – wybierz kategorię zajęć lub typu.
- Superclass (superklasa) – klasa, z której dziedziczy nowa klasa. Możesz wpisać nazwę pakietu i klasy lub tylko nazwę klasy, a potem kliknąć dwukrotnie element na liście, aby go automatycznie uzupełnić.
- Interfejsy – co najmniej 1 interfejs, który nowa klasa lub typ implementuje. Jeśli podajesz kilka interfejsów, rozdzielaj je przecinkami i opcjonalnie spacjami. Możesz wpisać nazwę pakietu i interfejsu lub tylko nazwę interfejsu, a potem kliknąć dwukrotnie element na liście rozwijanej, aby automatycznie uzupełnić pole.
- Pakiet – pakiet, w którym będzie się znajdować klasa lub typ. Domyślna wartość automatycznie pojawi się w polu. Jeśli w polu wpiszesz nazwę pakietu, wszystkie elementy identyfikatora pakietu, które nie istnieją, zostaną podświetlone na czerwono. W tym przypadku po kliknięciu OK Android Studio utworzy pakiet. To pole musi zawierać wartość. W przeciwnym razie plik Java nie będzie zawierać instrukcji
package
, a klasa lub typ nie zostaną umieszczone w pakiecie w projekcie. - Widoczność – określ, czy zajęcia lub typ mają być widoczne dla wszystkich zajęć, czy tylko dla tych z własnego pakietu.
- Modyfikatory – wybierz modyfikator Abstraktowy lub Ostateczny dla Klasy, albo nie wybierz żadnego.
- Pokaż okno wyboru zastąpień – w przypadku rodzaju Zajęcia zaznacz tę opcję, aby po kliknięciu OK otworzyć okno Wybierz metody do zastąpienia lub wdrożenia. W tym oknie możesz wybrać metody, które chcesz zastąpić lub zaimplementować. Android Studio wygeneruje dla nich kod szablonu.
- Kliknij OK.
Możesz też wybrać plik lub folder Java w oknie Projekt albo kliknąć plik Java w Edytorze kodu. Następnie wybierz Plik > Nowy > Java Class.
Wybrany element określa domyślny pakiet dla nowych zajęć lub typu.
Autouzupełnianie działa tylko w przypadku pierwszej nazwy interfejsu. Pamiętaj, że przecinek i następująca nazwa interfejsu mogą wywołać błąd w opisie, ale możesz go zignorować, ponieważ nie wpływa on na wygenerowany kod.
Domyślna wartość zależy od tego, jak uruchomiono okno Utwórz nowe zajęcia. Jeśli w oknie Projekt najpierw wybrano plik lub folder Java, domyślnie wybrany zostanie pakiet dla wybranego elementu. Jeśli najpierw klikniesz plik Java w Edytorze kodu, domyślnie wybrany zostanie pakiet zawierający ten plik.
Wszystkie pola, które nie mają zastosowania do rodzaju, są ukryte.
Android Studio utworzy plik Java z szkieletowym kodem, który możesz modyfikować. Otworzy plik w Edytorze kodu.
Uwaga: klasę singleton możesz utworzyć, wybierając Plik > Nowy > Singleton lub Plik > Nowy > Klasa Java. Ta druga metoda oferuje więcej opcji.
Szablony plików w Android Studio
W tej sekcji znajduje się kod szablonu pliku w Android Studio napisany w języku skryptowym VTL, a za nim definicje zmiennych. Wartości podane w oknie Utwórz nowe zajęcia stają się wartościami zmiennymi w szablonie.
Pamiętaj, że wiersze zaczynające się od #if (${VISIBILITY}
sięgają do otwartej klamry ({
).
Szablon pliku AnnotationType
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end @interface ${NAME} #if (${INTERFACES} != "")extends ${INTERFACES} #end { }
Szablon pliku zajęć
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end #if (${ABSTRACT} == "TRUE")abstract #end #if (${FINAL} == "TRUE")final #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end { }
Szablon pliku wyliczenia
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end { }
Szablon pliku interfejsu
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end { #end { }
Szablon pojedynczego pliku
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end { private static final ${NAME} ourInstance = new ${NAME}(); #if (${VISIBILITY} == "PUBLIC")public #end static ${NAME} getInstance() { return ourInstance; } private ${NAME}() { } }
Zmienne szablonu pliku
Android Studio zastępuje zmienne szablonu pliku wartościami w wygenerowanym pliku Java. Wartości te wpisujesz w oknie Utwórz nowe zajęcia. W szablonie dostępne są te zmienne:
IMPORT_BLOCK
– lista instrukcji Javaimport
oddzielonych znakami końca wiersza, które są niezbędne do obsługi dowolnej superklasy lub interfejsów, albo pusty ciąg znaków (""
). Jeśli na przykład zaimplementujesz tylko interfejsRunnable
i nic nie rozszerzysz, ta zmienna będzie miała wartość"import java.lang.Runnable;\n"
. Jeśli wdrożysz interfejsRunnable
i rozszerzysz zajęciaActivity
, będzie to"import android.app.Activity;\nimportjava.lang.Runnable;\n"
.VISIBILITY
– czy zajęcia będą dostępne publicznie. Może mieć wartośćPUBLIC
lubPACKAGE_PRIVATE
.SUPERCLASS
– nazwa jednej klasy lub pusta. Jeśli tak, po nowej nazwie klasy pojawi się klauzulaextends ${SUPERCLASS}
.INTERFACES
– lista interfejsów rozdzielona przecinkami lub pusta. Jeśli jest obecna, po superklasie lub po nazwie klasy (jeśli nie ma superklasy) znajduje się klauzulaimplements ${INTERFACES}
. W przypadku interfejsów i typów adnotacji interfejsy mają słowo kluczoweextends
.ABSTRACT
– określa, czy klasa ma być abstrakcyjna. Może mieć wartośćTRUE
lubFALSE
.FINAL
– określa, czy zajęcia mają być zaliczone. Może mieć wartośćTRUE
lubFALSE
.