创建 Java 类或类型

借助创建新类 (Create New Class) 对话框和文件模板,Android Studio 可帮助您快速创建以下新类和类型:

  • Java 类
  • 枚举类和单例类
  • 接口和注解类型

填写创建新类对话框中的字段并点击确定 (OK) 后,Android Studio 会创建一个包含骨架代码的 .java 文件,其中包括 package 语句、任何必要的 import 语句、标头以及类或类型声明。接下来,您可以将自己的代码添加到该文件中。

文件模板规定了 Android Studio 如何生成骨架代码。您可以直接使用 Android Studio 提供的文件模板,也可以根据自己的开发流程对它们进行自定义。

查看和自定义文件模板

Android Studio 提供的文件模板决定了如何使用创建新类对话框创建新的 Java 类和类型。您可以自定义这些模板。

The Create New Class dialog.

图 1. 创建新类对话框。

Android Studio 文件模板包含 Velocity 模板语言 (VTL) 代码和用于处理这些附加选项的变量。创建新类对话框会使用 AnnotationTypeClassEnumInterfaceSingleton 文件模板。

要查看模板、查找自定义项并修改模板,请按照以下步骤操作:

  1. 执行以下操作之一:

    • 对于 Windows 或 Linux,请选择 File > Settings > Editor > File and Code Templates > Files
    • 对于 macOS,请选择 Android Studio > Preferences > Editor > File and Code Templates > Files

    模板列表中,内部模板名称以粗体显示。自定义模板名称则以高亮颜色(例如蓝色)显示。

  2. 根据需要自定义文件模板。

    如果您想使用创建新类对话框中的字段,请确保您的更改符合 Android Studio 文件模板代码

如需了解有关文件模板(包括 VTL)的更多信息,请参阅文件和代码模板以及“文件和代码模板”对话框

创建 Java 类或类型

Android Studio 可帮助您根据文件模板创建新的 Java 类、枚举类和单例类,以及接口和注解类型。

要创建新的 Java 类或类型,请按照以下步骤操作:

  1. 项目 (Project) 窗口中,右键点击 Java 文件或文件夹,然后选择 New > Java Class
  2. 或者,在项目窗口中选中一个 Java 文件或文件夹,或者在代码编辑器中点击某个 Java 文件。然后选择 File > New > Java Class

    您选择的项目决定了新类或类型的默认包。

  3. 创建新类对话框中,填写字段:
    • Name - 新类或类型的名称。它必须符合 Java 命名要求。不要输入文件扩展名。
    • Kind - 选择类或类型的类别。
    • Superclass - 新类所继承的父类。您可以输入包名和类名,或者只输入类名,然后双击下拉列表中的项目进行自动补全。
    • Interface(s) - 新类或类型实现的一个或多个接口。多个接口应使用逗号分隔,逗号后可选择添加空格。您可以输入包名和接口名,或者只输入接口名,然后双击下拉列表中的项目进行自动补全。
    • 自动补全仅适用于第一个接口名称。请注意,虽然逗号和随后的接口名称可能会弹出工具提示错误,但您可以忽略该错误,因为它不会影响生成的代码。

    • Package - 类或类型所在的包。该字段会自动显示默认值。如果您在字段中输入包名,包标识符中不存在的部分会以红色高亮显示;在这种情况下,Android Studio 会在您点击确定后创建该包。此字段必须包含值;否则,Java 文件将不包含 package 语句,并且该类或类型在项目中将不会位于任何包内。
    • 默认值取决于您启动创建新类对话框的方式。如果您先在项目窗口中选择了 Java 文件或文件夹,则默认值为所选项目的包。如果您先在代码编辑器中点击了 Java 文件,则默认值为包含该文件的包。

    • Visibility - 选择该类或类型是对所有类可见,还是仅对其自身包内的类可见。
    • Modifiers - 为 (Class) 选择 AbstractFinal 修饰符,或者两者都不选。
    • Show Select Overrides Dialog - 如果类型 (Kind) 为 (Class),请勾选此选项,以便在点击确定后打开“选择要重写/实现的方法”对话框。在此对话框中,您可以选择想要重写或实现的方法,Android Studio 将为这些方法生成骨架代码。

    任何不适用于当前类型 (Kind) 的字段都将被隐藏。

  4. 点击 **OK**。
  5. Android Studio 会创建一个包含您可以修改的骨架代码的 Java 文件,并在代码编辑器中打开该文件。

注意:您可以通过选择 File > New > SingletonFile > New > Java Class 来创建单例类;后者提供了更多选项。

Android Studio 文件模板

本部分列出了使用 VTL 脚本语言编写的 Android Studio 文件模板代码,以及后续的变量定义。您在创建新类对话框中提供的值将成为模板中的变量值。请注意,以 #if (${VISIBILITY} 开头的行会一直延伸到左花括号 ( { )。

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 {
}

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 {
}

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 {
}

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 {
}

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

文件模板变量

Android Studio 会将文件模板变量替换为生成的 Java 文件中的值。您需要在创建新类对话框中输入这些值。模板具有以下您可以使用的变量:

  • IMPORT_BLOCK - 支持任何父类或接口所必需的 Java import 语句的换行符分隔列表,或者是空字符串 ("")。例如,如果您仅实现 Runnable 接口且不扩展任何内容,则此变量将为 "import java.lang.Runnable;\n"。如果您实现 Runnable 接口并扩展 Activity 类,它将为 "import android.app.Activity;\nimportjava.lang.Runnable;\n"
  • VISIBILITY - 类是否具有公共访问权限。它可以取值为 PUBLICPACKAGE_PRIVATE
  • SUPERCLASS - 单个类名或为空。如果存在,则在新类名称之后会有一个 extends ${SUPERCLASS} 子句。
  • INTERFACES - 逗号分隔的接口列表或为空。如果存在,则在父类之后(如果没有父类,则在类名之后)会有一个 implements ${INTERFACES} 子句。对于接口和注解类型,接口具有 extends 关键字。
  • ABSTRACT - 类是否应为抽象类。它可以取值为 TRUEFALSE
  • FINAL - 类是否应为最终类。它可以取值为 TRUEFALSE