创建 Java 类或类型

使用 **创建新类** 对话框和文件模板,Android Studio 可以帮助您快速创建以下新类和类型

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

在您填写 **创建新类** 对话框字段并单击 **确定** 后,Android Studio 将创建一个包含骨架代码的 .java 文件,其中包括包语句、任何必要的导入、标题以及类或类型声明。接下来,您可以将代码添加到此文件中。

文件模板指定 Android Studio 如何生成骨架代码。您可以按原样使用随 Android Studio 提供的文件模板,也可以根据自己的开发流程进行自定义。

查看和自定义文件模板

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

The Create New Class dialog.

**图 1**. **创建新类** 对话框。

Android Studio 文件模板包含 Velocity 模板语言 (VTL) 代码和变量,用于处理这些附加选项。**新建类** 对话框使用 **AnnotationType**、**Class**、**Enum**、**Interface** 和 **Singleton** 文件模板。

要查看模板、查找自定义项和修改模板,请执行以下步骤

  1. 执行以下操作之一

    • 对于 Windows 或 Linux,请选择 **文件 > 设置 > 编辑器 > 文件和代码模板 > 文件**。
    • 对于 macOS,请选择 **Android Studio > 偏好设置 > 编辑器 > 文件和代码模板 > 文件**。

    模板列表 中,内部模板名称以粗体显示。自定义模板名称以突出显示的颜色显示,例如蓝色。

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

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

有关文件模板的更多信息,包括 VTL,请参阅 文件和代码模板文件和代码模板对话框

创建 Java 类或类型

Android Studio 可以帮助您基于 文件模板 创建新的 Java 类;枚举和单例类;以及接口和注释类型。

要创建新的 Java 类或类型,请执行以下步骤

  1. 在 **项目** 窗口中,右键单击 Java 文件或文件夹,然后选择 **新建 > Java 类**。
  2. 或者,在 **项目** 窗口中选择 Java 文件或文件夹,或在代码编辑器中单击 Java 文件。然后选择 **文件 > 新建 > Java 类**。

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

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

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

    • **可见性** - 选择类或类型是可见于所有类,还是仅可见于其自身的包中的类。
    • **修饰符** - 为 **类** 选择 **抽象** 或 **最终** 修饰符,或两者都不选择。
    • **显示选择重写对话框** - 对于 **类型** 为 **类** 的情况,选中此选项以在您单击 **确定** 后打开 选择要重写/实现的方法对话框。在此对话框中,您可以选择要重写或实现的方法,Android Studio 将为这些方法生成骨架代码。

    任何不适用于 **类型** 的字段都会隐藏。

  4. 单击 **确定**。
  5. Android Studio 将创建一个 Java 文件,其中包含您可以修改的骨架代码。它将在代码编辑器中打开该文件。

**注意:**您可以通过选择 **文件 > 新建 > 单例** 或 **文件 > 新建 > Java 类** 创建单例类;后一种技术提供了更多选项。

Android Studio 文件模板

本节列出了用 VTL 脚本语言编写的 Android Studio 文件模板代码,后面是变量的定义。您在 **新建类** 对话框中提供的 value 将成为模板中的变量 value。请注意,以 #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 文件中的 value。您可以在 **新建类** 对话框中输入这些 value。模板具有以下您可以使用的变量

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