Dzięki oknu Create New Class (Tworzenie nowej klasy) i szablonom plików Android Studio pomaga szybko tworzyć te nowe klasy i typy:
- klasy Java,
- Klasy wyliczeniowe i singletony
- Typy interfejsów i adnotacji
Po wypełnieniu pól w oknie Create New Class (Utwórz nową klasę) i kliknięciu OK Android Studio utworzy .java
plik zawierający szkielet kodu, w tym instrukcję pakietu, niezbędne importy, nagłówek i deklarację klasy lub typu. Następnie możesz dodać do tego pliku kod.
Szablony plików określają, jak Android Studio generuje kod szkieletowy. Możesz używać szablonów plików dostarczonych z Androidem Studio w niezmienionej formie lub dostosowywać je do swoich potrzeb.
Wyświetlanie i dostosowywanie szablonów plików
Android Studio udostępnia szablony plików, które określają, jak tworzone są nowe klasy i typy Java w oknie Utwórz nową klasę. Możesz dostosować te szablony.
Rysunek 1. Okno Utwórz nowe zajęcia.
Szablony plików Androida Studio zawierają kod VTL (Velocity Template Language) i zmienne, które obsługują te dodatkowe opcje. W oknie Create New Class (Utwórz nową klasę) używane są szablony plików AnnotationType, Class, Enum, Interface i Singleton.
Aby wyświetlić szablony, znaleźć dostosowania i zmodyfikować szablony, wykonaj te czynności:
Wykonaj jedną z tych czynności:
- W systemie Windows lub Linux wybierz File > Settings > Editor > File and Code Templates > Files (Plik > Ustawienia > Edytor > Szablony plików i kodu > Pliki).
- W przypadku macOS wybierz Android Studio > Preferences > Editor > File and Code Templates > Files.
Na liście szablonów wewnętrzne nazwy szablonów są wyróżnione pogrubioną czcionką. Nazwy dostosowanych szablonów są wyświetlane w wyróżniającym się kolorze, np. niebieskim.
W razie potrzeby dostosuj szablony plików.
Jeśli chcesz użyć pól w oknie Create New Class (Utwórz nową klasę), upewnij się, że zmiany są zgodne z kodem szablonu pliku Android Studio.
Więcej informacji o szablonach plików, w tym o VTL, znajdziesz w sekcjach Szablony plików i kodu oraz Okno dialogowe Szablony plików i kodu.
Tworzenie klasy lub typu w Javie
Android Studio pomaga tworzyć nowe klasy Java, klasy wyliczeniowe i singleton, a także typy interfejsów i adnotacji na podstawie szablonów plików.
Aby utworzyć nową klasę lub typ w języku Java, wykonaj te czynności:
- W oknie Project (Projekt) kliknij prawym przyciskiem myszy plik lub folder Java i wybierz New (Nowy) > Java Class (Klasa Java).
- W oknie Utwórz nowe zajęcia wypełnij pola:
- Nazwa – nazwa nowych zajęć 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 – 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 autouzupełnić.
- Interfejsy – co najmniej jeden interfejs, który implementuje nowa klasa lub typ. Poszczególne interfejsy należy oddzielać przecinkiem i opcjonalną spacją. Możesz wpisać nazwę pakietu i interfejsu lub tylko nazwę interfejsu, a potem kliknąć dwukrotnie element na liście, aby go uzupełnić.
- Pakiet – pakiet, w którym będzie się znajdować klasa lub typ. W polu automatycznie pojawi się wartość domyślna. Jeśli w polu wpiszesz nazwę pakietu, wszystkie części identyfikatora pakietu, które nie istnieją, zostaną podświetlone na czerwono. W takim przypadku Android Studio utworzy pakiet po kliknięciu OK. 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ść – wybierz, czy zajęcia lub typ mają być widoczne dla wszystkich zajęć, czy tylko dla tych w tym samym pakiecie.
- Modyfikatory – wybierz modyfikator Abstract lub Final dla klasy albo nie wybieraj żadnego z nich.
- Show Select Overrides Dialog (Wyświetl okno wyboru zastąpień) – w przypadku rodzaju klasy zaznacz tę opcję, aby po kliknięciu OK otworzyć okno wyboru metod do zastąpienia lub zaimplementowania. W tym oknie możesz wybrać metody, które chcesz zastąpić lub zaimplementować, a Android Studio wygeneruje dla nich kod szkieletowy.
- Kliknij OK.
Możesz też wybrać plik lub folder Java w oknie Project lub kliknąć plik Java w edytorze kodu. Następnie wybierz Plik > Nowy > Klasa Java.
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 nazwa interfejsu mogą powodować wyświetlanie błędu w dymku, ale możesz go zignorować, ponieważ nie wpływa on na wygenerowany kod.
Wartość domyślna zależy od tego, jak zostało otwarte okno Utwórz nowe zajęcia. Jeśli najpierw wybierzesz plik lub folder Java w oknie Project (Projekt), domyślnie będzie to pakiet wybranego elementu. Jeśli najpierw klikniesz plik Java w edytorze kodu, domyślnie zostanie wybrany pakiet zawierający ten plik.
Pola, które nie mają zastosowania do rodzaju, są ukryte.
Android Studio utworzy plik Java z kodem szkieletowym, który możesz zmodyfikować. Otworzy się plik w edytorze kodu.
Uwaga: klasę singleton można utworzyć, wybierając Plik > Nowy > Singleton lub Plik > Nowy > Klasa Java. Ta druga metoda oferuje więcej opcji.
Szablony plików Android Studio
W tej sekcji znajdziesz kod szablonu pliku Android Studio napisany w języku skryptowym VTL, a także definicje zmiennych. Wartości podane w oknie Utwórz nowe zajęcia staną się wartościami zmiennych w szablonie.
Zwróć uwagę, że wiersze zaczynające się od znaku#if (${VISIBILITY}
rozciągają się aż do otwartego nawiasu klamrowego ({
).
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 wyliczeniowego
#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 wpisuje się w oknie Utwórz nowe zajęcia. Szablon zawiera te zmienne, których możesz użyć:
IMPORT_BLOCK
– lista instrukcji w języku Java oddzielonych znakiem nowego wiersza, które są niezbędne do obsługi dowolnej klasy nadrzędnej lub interfejsów, albo pusty ciąg znaków (""
). Jeśli na przykład implementujesz tylko interfejsRunnable
i nie rozszerzasz żadnej klasy, ta zmienna będzie miała wartość"import java.lang.Runnable;\n"
.import
Jeśli zaimplementujesz interfejsRunnable
i rozszerzysz klasęActivity
, 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
– pojedyncza nazwa klasy lub pusta. Jeśli występuje, po nowej nazwie klasy pojawi się klauzulaextends ${SUPERCLASS}
.INTERFACES
– rozdzielana przecinkami lista interfejsów lub pusta. Jeśli występuje, po nadklasie lub po nazwie klasy (jeśli nie ma nadklasy) pojawi się klauzulaimplements ${INTERFACES}
. W przypadku interfejsów i typów adnotacji interfejsy mają słowo kluczoweextends
.ABSTRACT
– czy klasa powinna być abstrakcyjna. Może mieć wartośćTRUE
lubFALSE
.FINAL
– czy klasa powinna być ostateczna. Może mieć wartośćTRUE
lubFALSE
.