Criar um tipo ou classe Java

Com a caixa de diálogo Create New Class e os modelos de arquivo correspondentes, o Android Studio ajuda a criar rapidamente os seguintes novos tipos e classes:

  • Classes Java
  • Classes de enumeração e singleton
  • Tipos de interface e anotação

Depois que você preencher os campos da caixa de diálogo Create New Class e clicar em OK, o Android Studio criará um arquivo .java contendo o código de esqueleto, incluindo uma declaração package, todas as importações necessárias, um cabeçalho e uma declaração de classe ou tipo. Em seguida, você pode adicionar seu código a esse arquivo.

Modelos de arquivo especificam como o Android Studio gera o código do esqueleto. Com o Android Studio você pode usar os modelos de arquivo como estão ou personalizá-los para que se adequem ao seu processo de desenvolvimento.

Ver e personalizar modelos de arquivo

O Android Studio oferece modelos de arquivo que determinam como novas classes e tipos Java são criados com a caixa de diálogo Create New Class. Você pode personalizar esses modelos.

A caixa de diálogo "Create New Class".

Figura 1. Caixa de diálogo Create New Class.

Os modelos de arquivo do Android Studio incluem o código Velocity Template Language (VTL, em inglês) e variáveis que processam essas outras opções. A caixa de diálogo Create New Class usa os modelos de arquivo AnnotationType, Class, Enum, Interface e Singleton.

Para ver e modificar os modelos e encontrar personalizações, siga estas etapas:

  1. Siga uma das seguintes ações:

    • Para Windows ou Linux, selecione File > Settings > Editor > File and Code Templates > Files.
    • Para macOS, selecione Android Studio > Preferences > Editor > File and Code Templates > Files.

    Na lista de modelos, os nomes dos modelos internos estão em negrito. Os nomes de modelos personalizados são mostrados com uma cor de destaque, como azul.

  2. Personalize os modelos de arquivo conforme necessário.

    Se você quiser usar os campos da caixa de diálogo Create New Class, verifique se as mudanças estão de acordo com o código do modelo de arquivo do Android Studio.

Para ver mais informações sobre modelos de arquivo, incluindo VTL, consulte Modelos de arquivo e código e Caixa de diálogo File and Code templates (links em inglês).

Criar uma classe ou um tipo Java

O Android Studio ajuda a criar novas classes Java, classes de enumeração e singleton e tipos de interface e anotação com base em modelos de arquivo.

Para criar uma nova classe ou tipo Java, siga estas etapas:

  1. Na janela Project, clique com o botão direito do mouse em um arquivo ou pasta Java e selecione New > Java Class.
  2. Como alternativa, selecione um arquivo ou pasta Java na janela Project ou clique em um arquivo Java no editor de código. Em seguida, selecione File > New > Java Class.

    O item selecionado determina o pacote padrão para a nova classe ou tipo.

  3. Na caixa de diálogo Create New Class, preencha os campos:
    • Name: o nome da nova classe ou tipo. Ele precisa obedecer aos requisitos de nome Java. Não digite uma extensão de nome de arquivo.
    • Kind: selecione a categoria da classe ou do tipo.
    • Superclass: a classe da qual a nova classe herda. Você pode digitar o nome do pacote e da classe ou apenas o nome da classe e, em seguida, clicar duas vezes em um item da lista suspensa para preencher automaticamente.
    • Interface(s): uma ou mais interfaces que a nova classe ou tipo implementa. As interfaces precisam ficar separadas por uma vírgula seguida por um espaço opcional. Você pode digitar o nome do pacote e da interface ou apenas o nome da interface e, em seguida, clicar duas vezes em um item da lista suspensa para preencher automaticamente.
    • O preenchimento automático funciona apenas para o nome da primeira interface. Embora a vírgula e o nome da interface a seguir possam gerar uma dica errada, você pode ignorá-la, porque isso não afeta o código gerado.

    • Package: o pacote em que a classe ou o tipo residirá. O padrão aparecerá automaticamente no campo. Se você digitar um nome de pacote no campo, as partes do identificador de pacote que não existirem serão destacadas em vermelho. Nesse caso, o Android Studio criará o pacote depois que você clicar em OK. Esse campo precisa conter um valor. Caso contrário, o arquivo Java não incluirá uma instrução package, e a classe ou o tipo não será colocado em um pacote no projeto.
    • O padrão depende a forma como a caixa de diálogo Create New Class foi iniciada. Se você selecionou um arquivo ou pasta Java na janela Project, o padrão será o pacote para o item selecionado. Se você clicou em um arquivo Java no editor de código, o padrão será o pacote que contém esse arquivo.

    • Visibility: selecione se a classe ou o tipo ficará visível para todas as classes ou apenas para as que estão no mesmo pacote.
    • Modifiers: selecione o modificador Abstract ou Final para uma Class. Também é possível não selecionar nenhum.
    • Show Select Overrides Dialog: para um Tipo de Classe, marque essa opção para abrir a caixa de diálogo Select Methods to Override/Implement após clicar em OK. Nessa caixa de diálogo, você pode selecionar métodos que gostaria de substituir ou implementar, e o Android Studio irá gerar um código de esqueleto para esses métodos.

    Todos os campos que não se aplicam ao Kind ficam ocultos.

  4. Clique em OK.
  5. O Android Studio cria um arquivo Java com código de esqueleto que você pode modificar. O arquivo abrirá no editor de código.

Observação: você pode criar uma classe singleton selecionando File > New > Singleton ou File > New > Java Class. A segunda técnica oferece mais opções.

Modelos de arquivos do Android Studio

Esta seção lista o código do modelo de arquivo do Android Studio escrito na linguagem de script VTL, seguido pelas definições das variáveis. Os valores fornecidos na caixa de diálogo Create New Class passam a ser os valores das variáveis do modelo. As linhas que começam com #if (${VISIBILITY} se estendem até a chave aberta ( {).

Modelo de arquivo 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 {
}

Modelo de arquivo 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 {
}

Modelo de arquivo 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 {
}

Modelo de arquivo 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 {
}

Modelo de arquivo 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}() {
    }
}

Variáveis de modelo de arquivo

O Android Studio substitui as variáveis do modelo de arquivo pelos valores do arquivo Java gerado. Você pode inserir os valores na caixa de diálogo Create New Class. O modelo tem as seguintes variáveis que você pode usar:

  • IMPORT_BLOCK: uma lista delimitada por nova linha de declarações import Java necessárias para oferecer compatibilidade com qualquer superclasse ou interface ou uma string vazia (""). Por exemplo, se você implementar apenas a interface Runnable e não estender nada, essa variável será "import java.lang.Runnable;\n". Se você implementar a interface Runnable e estender a classe Activity, ela será "import android.app.Activity;\nimportjava.lang.Runnable;\n".
  • VISIBILITY: se a classe terá acesso público ou não. Pode ter o valor PUBLIC ou PACKAGE_PRIVATE.
  • SUPERCLASS: um nome de classe único ou vazio. Se presente, haverá uma cláusula extends ${SUPERCLASS} após o novo nome de classe.
  • INTERFACES: uma lista de interfaces separadas por vírgulas ou vazia. Se presente, haverá uma cláusula implements ${INTERFACES} após a superclasse ou após o nome de classe, caso não haja uma superclasse. Para tipos de interface e anotação, as interfaces têm a palavra-chave extends.
  • ABSTRACT: se a classe precisa ser abstrata ou não. Pode ter um valor TRUE ou FALSE.
  • FINAL: se a classe precisa ser final ou não. Pode ter um valor TRUE ou FALSE.