Bài tập

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

Huy Erick

Với hộp thoại Tạo Lớp Mới và các mẫu tệp, Android Studio giúp bạn nhanh chóng tạo các lớp và kiểu mới sau đây: Lớp Java Lớp đơn và liệt kê Giao diện và kiểu...

Với hộp thoại Tạo Lớp Mới và các mẫu tệp, Android Studio giúp bạn nhanh chóng tạo các lớp và kiểu mới sau đây:

  • Lớp Java
  • Lớp đơn và liệt kê
  • Giao diện và kiểu chú thích

Sau khi bạn điền vào các trường hộp thoại Tạo Lớp Mới và nhấp vào OK, Android Studio sẽ tạo một tệp .java chứa mã khung, bao gồm câu lệnh gói, các khai báo nhập cần thiết, một tiêu đề và khai báo lớp hoặc kiểu. Tiếp theo, bạn có thể thêm mã của mình vào tệp này.

Mẫu tệp xác định cách Android Studio tạo mã khung. Bạn có thể sử dụng các mẫu tệp được cung cấp sẵn với Android Studio như những gì nó với quy trình phát triển của bạn.

Xem và tùy chỉnh các mẫu tệp

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

Hình 1. Hộp thoại Tạo Lớp Mới.

Các mẫu tệp của Android Studio bao gồm mã ngôn ngữ kịch bản Velocity Template Language (VTL) và các biến xử lý các tùy chọn bổ sung này. Hộp thoại Tạo Lớp Mới sử dụng các mẫu tệp AnnotationType, Class, Enum, InterfaceSingleton.

Để xem các mẫu, tìm các tùy chỉnh và chỉnh sửa các mẫu, làm theo các bước sau:

  1. Nhấp vào File > Cài đặt > Biên tập viên > Tệp và Mã Nguồn Mã > Tệp (đối với Windows hoặc Linux) hoặc Android Studio > Tùy chọn > Biên tập viên > Tệp và Mã Nguồn Mã > Tệp (đối với macOS).
  2. Trong danh sách mẫu, tên mẫu nội bộ được in đậm. Tên mẫu tùy chỉnh được hiển thị với màu nổi bật, chẳng hạn như màu xanh.

Tùy chỉnh các mẫu tệp theo nhu cầu của bạn. Nếu bạn muốn sử dụng các trường hộp thoại Tạo Lớp Mới, hãy đảm bảo rằng các thay đổi của bạn tuân thủ mã mẫu tệp của Android Studio.

Để biết thêm thông tin về các mẫu tệp, bao gồm VTL, hãy xem Tệp và Mã Nguồn MãHộp Thoại Tệp và Mã Nguồn Mã.

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

Android Studio giúp bạn tạo lớp Java mới; lớp đơn và liệt kê; và giao diện và kiểu chú thích dựa trên mẫu tệp.

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

  1. Trong cửa sổ Dự án, nhấp chuột phải vào một tệp hoặc thư mục Java, và chọn Mới > Lớp Java.
  2. Hoặc, chọn một tệp hoặc thư mục Java trong cửa sổ Dự án, hoặc nhấp chuột vào một tệp Java trong Trình soạn mã. Sau đó, chọn Tệp > Mới > Lớp Java.
  3. Mục bạn chọn xác định gói mặc định cho lớp hoặc kiểu mới.

Trong hộp thoại Tạo Lớp Mới, điền vào các trường:

  • Tên: Tên của lớp hoặc kiểu mới. Nó phải tuân thủ yêu cầu tên Java. Không nhập phần mở rộng tên tệp.
  • Loại: Chọn danh mục của lớp hoặc kiểu.
  • Lớp cha: Lớp mà lớp mới của bạn kế thừa. Bạn có thể nhập gói và tên lớp, hoặc chỉ tên lớp và sau đó nhấp đúp vào một mục trong danh sách thả xuống để tự động hoàn chỉnh.
  • Giao diện: Một hoặc nhiều giao diện mà lớp hoặc kiểu mới thực hiện. Nhiều giao diện nên được phân tách bằng dấu phẩy, theo sau là một khoảng trắng tùy chọn. Bạn có thể nhập gói và tên giao diện, hoặc chỉ tên giao diện và sau đó nhấp đúp vào một mục trong danh sách thả xuống để tự động hoàn chỉnh.

Lưu ý rằng chỉ cần nhập tên giao diện đầu tiên thì tính năng tự động hoàn chỉnh mới hoạt động. Lưu ý rằng dấu phẩy và tên giao diện tiếp theo có thể tạo ra thông báo đoạn câu lệnh nhưng bạn có thể bỏ qua lỗi này vì nó không ảnh hưởng đến mã được tạo.

  • Gói: Gói mà lớp hoặc kiểu sẽ nằm trong. Giá trị mặc định tự động xuất hiện trong trường. Nếu bạn nhập tên gói vào trường, bất kỳ phần nào của tên gói không tồn tại được làm đỏ; 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 lệnh gói và lớp hoặc kiểu sẽ không được đặt trong một gói trong dự án.

Giá trị mặc định phụ thuộc vào cách bạn khởi chạy hộp thoại Tạo Lớp Mới. Nếu bạn trước tiên chọn một tệp hoặc thư mục Java trong cửa sổ Dự án, giá trị mặc định sẽ là gói cho mục bạn đã chọn. Nếu bạn trước tiên nhấp chuột vào một tệp Java trong Trình soạn mã, giá trị mặc định sẽ là gói chứa tệp này.

  • Khả năng nhìn thấy: Chọn xem lớp hoặc kiểu có khả năng nhìn thấy cho tất cả các lớp hay chỉ cho các lớp trong cùng gói của nó.
  • Các bộ sửa đổi: Chọn bộ sửa đổi Abstract hoặc Final cho một Lớp, hoặc không chọn gì cả.
  • Hiển thị Hộp Thoại Chọn Ghi Đè: Đối với một LoạiLớp, kiểm tra tùy chọn này để mở hộp thoại Chọn Phương Thức Ghi Đè/Thực Hiện sau khi 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 ghi đè hoặc thực hiện, và Android Studio sẽ tạo mã khung cho các phương thức này.

Bất kỳ trường nào không áp dụng cho Loại sẽ bị ẩn.

Nhấp vào OK.

Android Studio tạo một tệp Java với mã khung mà bạn có thể chỉnh sửa. Nó sẽ mở tệp trong Trình soạn mã.

Lưu ý: Bạn có thể tạo một lớp đơn bằng cách chọn Tệp > Mới > Lớp Đơn hoặc Tệp > Mới > Lớp Java; kỹ thuật sau cung cấp nhiều tùy chọn hơn.

Mẫu tệp của Android Studio

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

Mẫu tệp 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
{ 
}

Mẫu tệp 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
{ 
}

Mẫu tệp 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
{ 
}

Mẫu tệp 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
{ 
}

Mẫu tệp 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 mẫu tệp

Android Studio thay thế các biến mẫu tệp bằng các giá trị trong tệp Java được tạo. Bạn nhập các giá trị này trong hộp thoại Tạo Lớp Mới. Mẫu có các biến sau mà bạn có thể sử dụng:

  • IMPORT_BLOCK: Danh sách các câu lệnh nhập Java được phân tách bằng dấu xuống dòng cần thiết để hỗ trợ lớp cha hoặc các giao diện, hoặc một chuỗi rỗng (""). Ví dụ: Nếu bạn chỉ thực hiện giao diện Runnable và không mở rộng cái gì cả, biến này sẽ là "import java.lang.Runnable;n". Nếu bạn thực hiện giao diện Runnable và mở rộng lớp Activity, nó sẽ là "import android.app.Activity;nimportjava.lang.Runnable;n".
  • VISIBILITY: Lớp sẽ có quyền truy cập công cộng hoặc không. Nó có thể có giá trị là PUBLIC hoặc PACKAGE_PRIVATE.
  • SUPERCLASS: Một tên lớp duy nhất hoặc rỗng. Nếu có mặt, sẽ có mệnh đề extends ${SUPERCLASS} sau tên lớp mới.
  • INTERFACES: Một danh sách phân tách bằng dấu phẩy của giao diện hoặc rỗng. Nếu hiện diện, sẽ có mệnh đề implements ${INTERFACES} sau lớp cha, hoặc sau tên lớp nếu không có lớp cha. Đối với giao diện và kiểu chú thích, các giao diện có từ khóa extends.
  • ABSTRACT: Lớp có nên là lớp trừu tượng hay không. Có thể có giá trị TRUE hoặc FALSE.
  • FINAL: Lớp có nên là lớp final hay không. Có thể có giá trị TRUE hoặc FALSE.
1