Android Studio pomaga szybko tworzyć te nowe klasy i typy za pomocą okna Utwórz nową klasę i szablonów plików:
- klasy Java,
- klasy wyliczeniowe i klasy singleton,
- typy interfejsów i adnotacji.
Gdy wypełnisz pola w oknie Utwórz nową klasę i klikniesz
OK, Android Studio utworzy plik .java zawierający
kod szkieletowy, w tym instrukcję pakietu, wszystkie 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ą, jak Android Studio generuje kod szkieletowy. Możesz używać szablonów plików dostarczonych z Android Studio w niezmienionej postaci lub dostosować je do swojego procesu tworzenia.
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 za pomocą okna Utwórz nową klasę. Możesz dostosować te szablony.
Rysunek 1. Okno Utwórz nowe zajęcia.
Szablony plików Android Studio zawierają kod i zmienne Velocity Template Language (VTL) które obsługują te dodatkowe opcje. Okno Utwórz nową klasę używa szablonów 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 Plik > Ustawienia > Edytor > Szablony plików i kodu > Pliki.
- W systemie macOS wybierz Android Studio > Ustawienia > Edytor > Szablony plików i kodu > Pliki.
Na liście szablonów, wewnętrzne nazwy szablonów są pogrubione. Nazwy dostosowanych szablonów są wyświetlane w kolorze wyróżnienia, 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 twoje zmiany są zgodne z kodem szablonu pliku Android Studio.
Więcej informacji o szablonach plików, w tym o VTL, znajdziesz w artykułach Szablony plików i kodu oraz Okno Szablony plików i kodu.
Tworzenie klasy lub typu Java
Android Studio pomaga tworzyć nowe klasy Java, klasy wyliczeniowe i klasy singleton klasy 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 nową klasę 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ę klasy lub typu.
- Nadklasa – klasa, z której dziedziczy nowa klasa. Możesz wpisać nazwę pakietu i klasy lub tylko nazwę klasy, a następnie kliknąć dwukrotnie element na liście, aby go autouzupełnić.
- Interfejsy – co najmniej 1 interfejs, który implementuje nowa klasa lub typ. Poszczególne interfejsy należy oddzielać przecinkiem, po którym może występować spacja. Możesz wpisać nazwę pakietu i interfejsu lub tylko nazwę interfejsu, a następnie kliknąć dwukrotnie element na liście, aby go autouzupeł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ą wyróżnione 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 zostanie umieszczona w pakiecie w projekcie. - Widoczność – wybierz, czy klasa lub typ ma być widoczny dla wszystkich klas, czy tylko dla tych w swoim pakiecie.
- Modyfikatory – wybierz modyfikator Abstract lub Final dla klasy albo nie wybieraj żadnego.
- Pokaż okno Wybierz metody do zastąpienia – w przypadku rodzaju Klasa zaznacz tę opcję, aby po kliknięciu OK otworzyć okno Wybierz metody do zastąpienia/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 Projekt albo kliknąć plik Java w edytorze kodu. Następnie wybierz Plik > Nowy > Klasa Java.
Wybrany element określa domyślny pakiet dla nowej klasy lub typu.
Autouzupełnianie działa tylko w przypadku pierwszej nazwy interfejsu. Pamiętaj, że podczas gdy przecinek i następująca po nim nazwa interfejsu mogą powodować wyświetlanie dymku z błędem, możesz zignorować błąd, ponieważ nie wpływa on na wygenerowany kod.
Wartość domyślna zależy od sposobu uruchomienia okna Utwórz nową klasę. Jeśli najpierw wybierzesz plik lub folder Java w oknie Projekt, wartością domyślną będzie pakiet wybranego elementu. Jeśli najpierw klikniesz plik Java w edytorze kodu, wartością domyślną będzie pakiet zawierający ten plik.
Wszystkie pola, które nie mają zastosowania do rodzaju , są ukryte.
Android Studio utworzy plik Java z kodem szkieletowym, 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 Android Studio
W tej sekcji znajdziesz kod szablonu pliku Android Studio napisany w języku skryptowym VTL oraz definicje zmiennych. Wartości podane w oknie Utwórz nową klasę stają się wartościami zmiennych w szablonie.
Pamiętaj, że wiersze zaczynające się od
#if (${VISIBILITY} rozciągają się aż do nawiasu otwierającego (
{ ).
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 Class
#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 Enum
#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 Interface
#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 pliku Singleton
#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 nową klasę. Szablon zawiera te zmienne, których możesz używać:
IMPORT_BLOCK– lista instrukcji Javaimportrozdzielonych znakami nowego wiersza, które są niezbędne do obsługi nadklasy lub interfejsów, albo pusty ciąg znaków (""). Jeśli na przykład implementujesz tylko interfejsRunnablei nie rozszerzasz niczego, ta zmienna będzie mieć wartość"import java.lang.Runnable;\n". Jeśli implementujesz interfejsRunnablei rozszerzasz klasęActivity, będzie to"import android.app.Activity;\nimportjava.lang.Runnable;\n".VISIBILITY– określa, czy zajęcia będą mieć dostęp publiczny. Może mieć wartośćPUBLIClubPACKAGE_PRIVATE.SUPERCLASS– nazwa pojedynczych zajęć lub pusta. Jeśli jest obecna, po nazwie nowej klasy pojawi się klauzulaextends ${SUPERCLASS}.INTERFACES– lista interfejsów rozdzielonych przecinkami lub pusta. Jeśli jest obecna, 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– określa, czy klasa ma być abstrakcyjna. Może mieć wartośćTRUElubFALSE.FINAL– określa, czy klasa ma być ostateczna. Może mieć wartośćTRUElubFALSE.