Za pomocą okna Utwórz nową klasę i szablonów plików Android Studio pomaga szybko tworzyć nowe klasy i typy:
- klasy Java,
- Klasy wyliczania i typu 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 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ć.
Szablony plików w Android Studio zawierają kod VTL i kod języka Velocity Template Language (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 systemie macOS wybierz Android Studio > Ustawienia > Edytor > Pliki i szablony kodu > Pliki.
Na liście szablonów nazwy wewnętrzne szablonów są wyświetlane pogrubioną czcionką. Nazwy spersonalizowanych szablonów są wyróżnione na wybrany kolor, np. na niebiesko.
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 w tworzeniu nowych klas Java, klas wyliczania i pojedynczych klas oraz typów interfejsów i adnotacji wykorzystujących szablony plików.
Aby utworzyć nową klasę lub typ Java:
- W oknie Projekt kliknij prawym przyciskiem myszy plik lub folder Java i wybierz Nowy > Java Class.
- W oknie Utwórz nową klasę wypełnij te 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 (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 jeden interfejs, który nowa klasa lub typ implementuje. Jeśli podajesz kilka interfejsów, rozdziel je przecinkami i opcjonalnie spacją. 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ść zostanie automatycznie wyświetlona 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 pakiet zostanie utworzony przez Android Studio. 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. Możesz też nie wybrać żadnego modyfikatora.
- 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ć, a 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 nazwy pierwszego interfejsu. Pamiętaj, że chociaż przecinek i ta nazwa interfejsu mogą wywołać błąd etykietki, możesz go zignorować, ponieważ nie ma to wpływu na wygenerowany kod.
Wartość domyślna zależy od tego, jak zostało przez Ciebie otwarte okno Utwórz nową klasę. 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 będzie pakiet zawierający ten plik.
Wszystkie pola, które nie mają zastosowania do rodzaju, są ukryte.
Android Studio tworzy plik Java z kodem szkieletowym, 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 otwierającej 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 typu wyliczenie
#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 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 te wpisujesz w oknie Create New Class (Utwórz nowe zajęcia). W szablonie dostępne są te zmienne:
IMPORT_BLOCK
– rozdzielana znakami nowego wiersza lista instrukcji Javaimport
niezbędnych do obsługi superklas lub interfejsów bądź pustego ciągu (""
). Jeśli na przykład wdrożysz tylko interfejsRunnable
i niczego nie rozszerzysz, zmienną będzie"import java.lang.Runnable;\n"
. 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
– 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ć ostateczne. Może mieć wartośćTRUE
lubFALSE
.