Za pomocą okna Utwórz nową klasę i szablonów 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 oraz 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 Java 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 spersonalizowanych 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 typ.
- 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 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 kliknij 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 zmodyfikować. 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 wartość. 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
.