创建 Java 类或类型

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

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

填写 Create New Class 对话框字段并点击 OK 后,Android Studio 会创建一个包含骨架代码的 .java 文件,其中包括包声明、任何必要的导入、头文件以及类或类型声明。接下来,您可以将代码添加到此文件。

文件模板指定 Android Studio 如何生成骨架代码。您可以按原样使用 Android Studio 提供的文件模板,或自定义它们以适应您的开发流程。

查看和自定义文件模板

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

The Create New Class dialog.

图 1. Create New Class 对话框。

Android Studio 文件模板包含 Velocity Template Language (VTL) 代码和变量,用于处理这些额外选项。Create New Class 对话框使用 AnnotationTypeClassEnumInterfaceSingleton 文件模板。

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

  1. 执行以下操作之一

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

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

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

    如果您想使用 Create New Class 对话框字段,请确保您的更改符合 Android Studio 文件模板代码

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

创建 Java 类或类型

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

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

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

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

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

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

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

    不适用于 Kind 的任何字段都将隐藏。

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

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

Android Studio 文件模板

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

  • 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 - 类是否应为 final 类。它可以取值为 TRUEFALSE