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 kod szkieletowy, 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 (Android Studio > Preferencje > Edytor > Szablony plików i kodu > Pliki).
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ść – określ, czy zajęcia lub typ są 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 wpisujesz 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 interfejsRunnablei nie rozszerzasz żadnej klasy, ta zmienna będzie miała wartość"import java.lang.Runnable;\n".importJeśli zaimplementujesz interfejsRunnablei 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śćPUBLIClubPACKAGE_PRIVATE.SUPERCLASS– pojedyncza nazwa klasy lub puste pole. 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 superklasie lub po nazwie klasy (jeśli nie ma superklasy) 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śćTRUElubFALSE.FINAL– czy klasa powinna być ostateczna. Może mieć wartośćTRUElubFALSE.