Tworzenie klasy lub typu Java

Dzięki oknu Utwórz nową klasę i szablonom plików Android Studio pozwala szybko tworzyć nowe klasy i typy:

  • klasy Java,
  • Wyliczenia i klasy 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 oraz 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 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 za pomocą okna Utwórz nową klasę. Możesz je dostosować.

Okno tworzenia nowych zajęć.

Rysunek 1 okno Tworzenie nowych zajęć.

Szablony plików w Android Studio zawierają kod języka szablonów Velocity (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, InterfaceSingleton.

Aby wyświetlić szablony, znaleźć dostosowania i je zmodyfikować:

  1. Wykonaj jedną z tych czynności:

    • W przypadku systemu Windows lub Linux wybierz Plik > Ustawienia > Edytowanie > Plik i kod > Szablony > Pliki.
    • W przypadku systemu macOS wybierz Android Studio > Preferencje > Edytor > Plik i kod > Szablony > Pliki.

    Na liście szablonów nazwy wewnętrzne szablonów są wyświetlane pogrubioną czcionką. Spersonalizowane nazwy szablonów są wyróżnione na wybrany kolor, np. na niebiesko.

  2. 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 tworzyć nowe klasy Java, typy enumeracji i singletonów oraz typy interfejsów i adnotacji na podstawie szablonów plików.

Aby utworzyć nową klasę lub typ Java:

  1. W oknie Projekt kliknij prawym przyciskiem myszy plik lub folder Java i wybierz Nowy > Klasa Java.
  2. 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.

  3. W oknie Utwórz nowe zajęcia 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ę 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, rozdzielaj je przecinkami i opcjonalnie spacjami. 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.
    • Autouzupełnianie działa tylko w przypadku pierwszego interfejsu. Pamiętaj, że przecinek i następująca nazwa interfejsu mogą wywołać błąd w opisie, ale możesz go zignorować, ponieważ nie wpływa on na wygenerowany kod.

    • 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.
    • Domyślna wartość zależy od tego, jak uruchomiono okno Utwórz nowe zajęcia. 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.

    • 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.

    Wszystkie pola, które nie mają zastosowania do rodzaju, są ukryte.

  4. Kliknij OK.
  5. Android Studio utworzy plik Java z szkieletowym kodem, 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 otwartej 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 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 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 Create New Class (Utwórz nowe zajęcia). W szablonie dostępne są te zmienne:

  • IMPORT_BLOCK – lista instrukcji Java import oddzielonych znakami końca wiersza, które są niezbędne do obsługi dowolnej superklasy lub interfejsów, albo pusty ciąg znaków (""). Jeśli na przykład zaimplementujesz tylko interfejs Runnable i nic nie rozszerzysz, ta zmienna będzie miała wartość "import java.lang.Runnable;\n". Jeśli wdrożysz interfejs Runnable i rozszerzysz zajęcia 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 lub PACKAGE_PRIVATE.
  • SUPERCLASS – nazwa jednej klasy lub pusta. Jeśli tak, po nowej nazwie klasy pojawi się klauzula extends ${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ę klauzula implements ${INTERFACES}. W przypadku interfejsów i typów adnotacji interfejsy mają słowo kluczowe extends.
  • ABSTRACT – określa, czy klasa ma być abstrakcyjna. Może mieć wartość TRUE lub FALSE.
  • FINAL – określa, czy zajęcia mają być ostateczne. Może mieć wartość TRUE lub FALSE.