Przy użyciu okna Utwórz nową klasę i szablonów plików Android Studio pomaga szybko tworzyć takie nowe klasy i typy:
- Klasy Java
- Klasy wyliczeń i 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, niezbędne importy, nagłówek i deklarację klasy lub typu. Następnie możesz dodać kod do tego pliku.
Szablony plików określają sposób generowania kodu szkieletowego przez Android Studio. Możesz użyć szablonów plików dostępnych w Android Studio w niezmienionej postaci lub dostosować je do swojego 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 klas i typów Java w oknie Utwórz nową klasę. Możesz je dostosować.
Szablony plików w Android Studio obejmują kod VTL (Venlocity Template Language) i 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 te czynności:
Wykonać jedną z tych czynności:
- W systemach Windows i Linux wybierz Plik > Ustawienia > Edytor > Pliki i szablony kodu > Pliki.
- W systemie macOS wybierz Android Studio > Ustawienia > Edytor > Pliki i szablony kodu > Pliki.
Na liście szablonów nazwy szablonów wewnętrznych są wyróżnione pogrubioną czcionką. Niestandardowe nazwy szablonów są wyświetlane w kolorze wyróżnienia, np. niebieskim.
Dostosuj szablony plików do swoich potrzeb.
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 sekcjach Szablony plików i kodu oraz Okno Szablony plików i kodu.
Tworzenie klasy lub typu Java
Android Studio ułatwia tworzenie nowych klas Javy, klas wyliczeniowych i pojedynczych klas oraz typów interfejsów i adnotacji opartych na szablonach plików.
Aby utworzyć nową klasę lub typ Java, wykonaj te czynności:
- W oknie Projekt kliknij prawym przyciskiem myszy plik lub folder Java i wybierz Nowy > Klasa Java.
- W oknie Create New Class (Utwórz nowe zajęcia) wypełnij pola:
- Nazwa – nazwa nowej klasy lub typu. Musi on być zgodny z wymaganiami dotyczącymi nazw Java. Nie wpisuj rozszerzenia nazwy pliku.
- Rodzaj – wybierz kategorię lub typ zajęć.
- Superclass – klasa, z której dziedziczy nowe zajęcia. Wpisz nazwę pakietu i klasy lub samą nazwę zajęć, a następnie kliknij dwukrotnie element na liście, aby go automatycznie uzupełnić.
- Interfejsy – co najmniej jeden interfejs zaimplementowany przez nową klasę lub typ. Poszczególne interfejsy powinny być rozdzielone przecinkami, po których następuje opcjonalna spacja. Wystarczy wpisać nazwę pakietu i interfejsu lub samą nazwę interfejsu, a następnie 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 wpiszesz w tym polu nazwę pakietu, wszystkie brakujące fragmenty identyfikatora pakietu zostaną wyróżnione na czerwono. W tym przypadku Android Studio utworzy pakiet, gdy klikniesz 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 klasa lub typ mają być widoczne dla wszystkich klas, czy tylko dla osób w ich pakiecie.
- Modyfikatory – wybierz modyfikator Streszczenie lub Końcowy dla elementu Class albo żaden z nich.
- Pokaż okno wyboru zastąpień – w przypadku rodzaju klasy zaznacz tę opcję, aby po kliknięciu OK otworzyć okno Wybierz metody do zastąpienia/implementacji. W tym oknie możesz wybrać metody, które chcesz zastąpić lub zaimplementować, a Android Studio wygeneruje ich kod szkieletowy.
- Kliknij OK.
Możesz też wybrać plik lub folder Javy w oknie Projekt lub kliknąć plik Javy w edytorze kodu. Następnie wybierz File (Plik) > New (Nowy) > Java Class (Klasa Java).
Wybrany element określa domyślny pakiet dla nowej klasy lub nowego typu.
Autouzupełnianie działa tylko w przypadku nazwy pierwszego interfejsu. Pamiętaj, że przecinek i następna nazwa interfejsu mogą spowodować wyświetlenie błędu etykietki, ale możesz go zignorować, ponieważ nie ma on wpływu na wygenerowany kod.
Zależy ona od tego, jak zostało przez Ciebie uruchomione okno Utwórz nową klasę. Jeśli po raz pierwszy w oknie Projekt wybrano plik lub folder Java, domyślnie jest to pakiet wybranego elementu. Jeśli po raz pierwszy klikniesz plik Java w edytorze kodu, domyślnym będzie pakiet zawierający ten plik.
Pola, które nie dotyczą rodzaju, są ukryte.
Android Studio tworzy plik w Javie ze szkieletem, który możesz modyfikować. Plik zostanie otwarty w edytorze kodu.
Uwaga: możesz utworzyć pojedynczą klasę, wybierając Plik > Nowy > Singleton lub Plik > Nowy > Klasa Java. Druga metoda zapewnia więcej opcji.
Szablony plików Android Studio
W tej sekcji znajduje się kod szablonu pliku w Android Studio napisany w języku skryptów VTL wraz z definicjami zmiennych. Wartości podane w oknie Utwórz nową klasę staną się wartościami zmiennych w szablonie.
Pamiętaj, że linie zaczynające się od #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 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 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 plików wartościami w wygenerowanym pliku Java. Wpisz wartości w oknie Utwórz nową klasę. Szablon zawiera te zmienne, których możesz użyć:
IMPORT_BLOCK
– rozdzielana znakiem nowej listy instrukcji Javaimport
, które są niezbędne do obsługi klas nadrzędnych i interfejsów, albo pustego ciągu znaków (""
). Jeśli np. zaimplementujesz tylko interfejsRunnable
i nie rozszerzasz niczego, ta zmienna będzie miała wartość"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
– określa, czy zajęcia mają dostęp publiczny. Może mieć wartośćPUBLIC
lubPACKAGE_PRIVATE
.SUPERCLASS
– nazwa pojedynczej klasy lub pusta. Jeśli ta nazwa jest obecna, po nazwie nowej klasy pojawi się klauzulaextends ${SUPERCLASS}
.INTERFACES
– lista interfejsów rozdzielonych przecinkami lub pusta. Jeśli klasa jest obecna, po jej nazwie znajduje się klauzulaimplements ${INTERFACES}
, a jeśli nie ma takiej klasy, znajduje się klauzulaimplements ${INTERFACES}
. W przypadku interfejsów i typów adnotacji elementy interfejsu zawierają słowo kluczoweextends
.ABSTRACT
– określa, czy klasa ma być abstrakcyjna, czy nie. Może mieć wartośćTRUE
lubFALSE
.FINAL
– określa, czy klasa powinna być ostateczna. Może mieć wartośćTRUE
lubFALSE
.