Tạo lớp hoặc kiểu Java

Với hộp thoại Create New Class (Tạo lớp mới) cũng như các tệp mẫu (file templates), Android Studio giúp bạn nhanh chóng tạo các lớp (class) và kiểu dữ liệu (type) mới sau đây:

  • Lớp Java
  • Lớp enum và singleton
  • Kiểu giao diện và chú thích

Sau khi bạn điền vào các trường trong hộp thoại Create New Class (Tạo lớp mới) rồi nhấp vào OK, Android Studio sẽ tạo một tệp .java chứa mã skeleton, bao gồm cả câu lệnh gói, mọi dữ liệu nhập cần thiết cũng như nội dung khai báo kiểu hoặc lớp. Tiếp theo, bạn có thể thêm mã vào tệp này.

Các tệp mẫu (file templates) chỉ định cách Android Studio tạo mã skeleton. Bạn có thể sử dụng ngay tệp mẫu được cung cấp trong Android Studio hoặc tuỳ chỉnh các mẫu đó cho phù hợp với quá trình phát triển của mình.

Xem và tuỳ chỉnh tệp mẫu

Android Studio cung cấp các tệp mẫu xác định cách tạo lớp và kiểu Java mới bằng hộp thoại Create New Class (Tạo lớp mới). Bạn có thể tuỳ chỉnh các mẫu này.

Hộp thoại Create New Class (Tạo lớp mới).

Hình 1. Hộp thoại Create New Class (Tạo lớp mới).

Các tệp mẫu trong Android Studio bao gồm mã Ngôn ngữ mẫu Velocity (VTL) cũng như các biến xử lý các tuỳ chọn bổ sung này. Hộp thoại Create New Class (Tạo lớp mới) sử dụng các tệp mẫu AnnotationType (Kiểu chú thích),Class (Lớp),Enum, Interface (Giao diện) và Singleton.

Để xem mẫu, tìm kiểu tuỳ chỉnh và sửa đổi mẫu, hãy làm theo các bước sau đây:

  1. Thực hiện một trong các thao tác sau:

    • Đối với Windows hoặc Linux, hãy chọn File (Tệp) > Settings (Cài đặt > Editor (Trình chỉnh sửa) > File and Code Templates (Tệp và mã mẫu) > Files (Tệp).
    • Đối với macOS, hãy chọn Android Studio > Preferences (Tuỳ chọn ưu tiên) > Editor (Trình chỉnh sửa) > File and Code Templates (Tệp và mã mẫu) > Files (Tệp).

    Trong danh sách mẫu, mẫu nội bộ có phông chữ đậm. Tên mẫu tuỳ chỉnh được thể hiện bằng một màu nổi bật, chẳng hạn như màu xanh dương.

  2. Tuỳ chỉnh tệp mẫu nếu cần.

    Nếu bạn muốn sử dụng các trường trong hộp thoại Create New Class (Tạo lớp mới), hãy đảm bảo các thay đổi của bạn tuân thủ mã tệp mẫu Android Studio.

Để biết thêm thông tin về các tệp mẫu, bao gồm cả VTL, hãy xem File and Code Templates (Tệp và mã mẫu) cũng như File and Code Templates Dialog (Hộp thoại tệp và mã mẫu).

Tạo lớp hoặc kiểu Java

Android Studio giúp bạn tạo các lớp Java mới, lớp enum và singleton cũng như kiểu giao diện và chú thích dựa trên tệp mẫu (file template).

Để tạo một lớp hoặc kiểu Java mới, hãy làm theo các bước sau:

  1. Trong cửa sổ Project (Dự án), hãy nhấp chuột phải vào một tệp hoặc thư mục Java rồi chọn New (Mới) > Java Class (Lớp Java).
  2. Ngoài ra, hãy chọn một tệp hoặc thư mục trong cửa sổ Project (Dự án) hoặc nhấp vào tệp Java trong Code Editor (Trình soạn thảo mã). Sau đó, hãy chọn File (Tệp) > New (Mới) > Java Class (Lớp Java).

    Mục bạn chọn sẽ xác định gói mặc định cho lớp hoặc kiểu mới.

  3. Trong hộp thoại Create New Class (Tạo lớp mới), hãy điền vào các trường:
    • Name (Tên) – Tên của lớp hoặc kiểu mới. Tên này phải tuân thủ các yêu cầu về tên Java. Đừng nhập đuôi tệp.
    • Kind (Loại) – Chọn danh mục lớp hoặc kiểu.
    • Superclass (Lớp mẹ) – Lớp mà lớp của bạn kế thừa. Bạn có thể nhập tên gói và tên lớp, hoặc chỉ tên lớp, sau đó nhấp đúp vào một mục trong danh sách thả xuống để tự động hoàn thành.
    • Interface (Giao diện) – Một hoặc nhiều giao diện mà lớp hoặc kiểu mới sẽ triển khai. Các giao diện phải được phân tách bằng dấu phẩy, theo sau là một dấu cách tuỳ ý. Bạn có thể nhập tên gói và giao diện, hoặc chỉ tên giao diện, sau đó nhấp đúp vào một mục trong danh sách thả xuống để tự động hoàn thành.
    • Tính năng tự động hoàn thành chỉ dùng được cho tên giao diện đầu tiên. Lưu ý rằng mặc dù dấu phẩy và tên giao diện sau đây có thể gây ra lỗi chú thích, nhưng bạn có thể bỏ qua vì lỗi này không ảnh hưởng đến mã đã tạo.

    • Package (Gói) – Gói mà lớp hoặc kiểu ở trong đó. Giá trị mặc định sẽ tự động xuất hiện trong trường. Nếu bạn nhập tên gói trong trường, thì phần nào của giá trị nhận dạng gói không tồn tại sẽ được đánh dấu màu đỏ; trong trường hợp này, Android Studio sẽ tạo gói sau khi bạn nhấp vào OK. Trường này phải chứa một giá trị; nếu không, tệp Java sẽ không chứa câu lệnh package và lớp hoặc kiểu sẽ không được đặt trong một gói thuộc dự án.
    • Chế độ mặc định tuỳ theo cách bạn mở hộp thoại Create New Class (Tạo lớp mới). Nếu trước tiên bạn chọn tệp hoặc thư mục Java trong cửa sổ Window (Dự án), thì theo mặc định, gói đó sẽ là gói cho mục bạn đã chọn. Nếu trước tiên bạn nhấp vào một tệp Java trong Code Editor (Trình soạn thảo mã), thì chế độ mặc định là gói chứa tệp này.

    • Visibility (Chế độ hiển thị) – Chọn xem lớp hoặc kiểu có hiển thị cho mọi lớp hay không hay chỉ cho các lớp trong gói tương ứng.
    • Modifiers (Phương thức sửa đổi)– Chọn phương thức sửa đổi Abstract (Trừu tượng) hoặc Final (Hoàn thiện) cho Class (Lớp), hoặc không chọn phương án nào.
    • Show Select Overrides Dialog (Hiện hộp thoại chọn ghi đè) – Đối với Kind (Loại) của Class (Lớp), hãy chọn tuỳ chọn này để mở Select Methods to Override/Implement dialog (hộp thoại Chọn phương thức để ghi đè/triển khai) sau khi bạn nhấp vào OK. Trong hộp thoại này, bạn có thể chọn các phương thức mà bạn muốn dùng để ghi đè hoặc triển khai, sau đó Android Studio sẽ tạo mã skeleton cho các phương thức này.

    Mọi trường không áp dụng Kind (Loại) đều bị ẩn.

  4. Nhấp vào OK.
  5. Android Studio tạo một tệp Java có mã skeleton mà bạn có thể sửa đổi. Thao tác này mở tệp trong Code Editor (Rrình soạn thảo mã).

Lưu ý: Bạn có thể tạo một lớp singleton bằng cách chọn File (Tệp) > New (Mới) > Singleton hoặc File (Tệp) > New (Mới) > Java Class (Lớp Java). Cách thứ hai cung cấp nhiều lựa chọn hơn.

Tệp mẫu trong Android Studio

Phần này liệt kê mã tệp mẫu Android Studio được viết bằng ngôn ngữ tập lệnh VTL, theo sau là định nghĩa cho các biến. Các giá trị mà bạn cung cấp trong hộp thoại Create New Class (Tạo lớp mới) sẽ trở thành giá trị biến trong mẫu. Xin lưu ý rằng các dòng bắt đầu bằng #if (${VISIBILITY} sẽ kéo dài đến dấu ngoặc nhọn mở ( { ).

Tệp mẫu 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 {
}

Tệp mẫu lớp

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

Tệp mẫu 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 {
}

Tệp mẫu giao diện

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

Tệp mẫu 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}() {
    }
}

Biến tệp mẫu

Android Studio thay các biến tệp mẫu bằng các giá trị trong tệp Java đã tạo. Bạn nhập các giá trị vào hộp thoại Create New Class (Tạo lớp mới). Trong mẫu này, bạn có thể sử dụng các biến sau đây:

  • IMPORT_BLOCK – Danh sách câu lệnh import được phân tách bằng dòng mới cần thiết để hỗ trợ mọi lớp mẹ hoặc giao diện, hoặc một chuỗi trống (""). Ví dụ: nếu bạn chỉ triển khai giao diện Runnable và không mở rộng, biến này sẽ là "import java.lang.Runnable;\n". Nếu bạn triển khai giao diện Runnable và mở rộng lớp Activity, thì biến này sẽ là "import android.app.Activity;\nimportjava.lang.Runnable;\n".
  • VISIBILITY – Cho dù lớp có quyền truy cập công khai hay không. Biến này có thể có giá trị PUBLIC hoặc PACKAGE_PRIVATE.
  • SUPERCLASS – Tên một lớp đơn hoặc để trống. Nếu có, sẽ có một mệnh đề extends ${SUPERCLASS} sau tên lớp mới.
  • INTERFACES – Một danh sách giao diện được phân tách bằng dấu phẩy hoặc để trống. Nếu có, sẽ có một mệnh đề implements ${INTERFACES} sau lớp mẹ hoặc sau tên lớp nếu không có lớp mẹ nào. Đối với giao diện và kiểu chú thích, giao diện sẽ có từ khoá extends.
  • ABSTRACT – Liệu lớp có nên ở dạng trừu tượng hay không. Biến này có thể có giá trị TRUE hoặc FALSE.
  • FINAL – Cho biết lớp có phải là lớp hoàn thiện hay không. Biến này có thể có giá trị TRUE hoặc FALSE.