Bạn mới tìm hiểu về lập trình Java cơ bản và còn băn khoăn không biết Java Annotation là gì? Cách sử dụng Java Annotation như thế nào? Cùng CodeGym Hà Nội tìm hiểu ngay qua bài viết dưới đây nhé.
Nội dung
Java Annotation là gì?
Java Annotation là gì? Annotation (chú thích) được hiểu là một loại siêu dữ liệu (metadata information) trong java. Nó có thể được áp dụng ở một số phần tử mã nguồn java để sau đó một số tool (công cụ ), debugger (trình gỡ lỗi) hoặc các chương trình ứng dụng có thể tận dụng được những chú thích này.
Các Annotation (chú thích) được thêm vào Java kể từ JDK 5. Bạn có thể chú thích class (các lớp), method (phương pháp), variable (các biến), parameter (các tham số) và package (các gói) trong java. Các chú thích được áp dụng trên mã nguồn java sẽ được biên dịch thành bytecode và được sử dụng kỹ thuật Reflection (lập trình phản chiếu) để có thể truy vấn thông tin siêu dữ liệu (metadata information) sau đó mới quyết định hành động thích hợp để thực hiện trong ngữ cảnh cụ thể.
Các Annotation sẽ không trực tiếp ảnh hưởng đến việc thực hiện các mã của bạn, cho dù một số loại chú thích có thể được sử dụng cho mục đích đó.
Annotation được xem là một tính năng rất hay và được sử dụng nhiều trong Java. Bạn có thể gặp một số Annotation trong các ứng dụng Java như:
- Java Core: @Deprecated, @SuppressWarnings, @Override,…
- Spring Framework: @Controller, @Repository, @Service, @Component,…
- Hibernate: @Table, @Column, @Id, @ManyToOne, @OneToMany,…
Mục đích sử dụng của các Annotation Java
Sau khi đã hiểu rõ Java Annotation là gì, tiếp theo bạn cần tìm hiểu Annotation được sử dụng cho những mục đích nào. Cụ thể như sau:
1. Compiler (Chỉ dẫn cho trình biên dịch)
Java thường được tích hợp sẵn 3 annotation để cung cấp các chỉ dẫn nhất định cho trình biên là: @Deprecated, @SuppressWarnings, @Override.
2. Compile-time (Chỉ dẫn trong thời điểm biên dịch)
Các annotation có thể cung cấp hướng dẫn trong lúc biên dịch cho trình biên dịch được sử dụng bởi các phần mềm như XML file, code, …
3. Runtime (Chỉ dẫn trong thời gian chạy)
Thường thì các Annotation không có mặt trong mã Java sau khi biên dịch. Tuy nhiên, bạn có thể xác định trong thời gian chạy bằng kỹ thuật Java Reflection để đưa ra những hướng dẫn cho chương trình tại Runtime.
Ký hiệu Annotations
Sau khi biết khái niệm Java Annotation là gì bạn cũng cần biết ký hiệu chú thích nó. Một Annotation (chú thích) luôn bắt đầu với ký hiệu @ kèm tên của chú thích. Ký hiệu @ sẽ chỉ ra cho trình biên dịch rằng đây là 1 chú thích.
Ví dụ: @Override trong đó:
- Ký hiệu @ mô tả đây là 1 chú thích
- Override sẽ là tên của chú thích.
Giới thiệu một số Annotation sẵn có của Java
Từ khái niệm Java Annotation là gì, bạn có thể tìm hiểu thêm một số Annotation sẵn có của Java dưới đây:
1. @Deprecated java là gì?
Chú thích @Deprecated sẽ chỉ ra rằng những phần tử bị đánh dấu (method, class hoặc field) đã bị lỗi thời, không nên sử dụng nữa. Trình biên dịch sẽ sinh ra 1 cảnh báo bất cứ khi nào chương trình sử dụng 1 phương thức, lớp hoặc trường đã bị đánh dấu bằng chú thích @Deprecated. Khi 1 phần tử bị đánh dấu bằng chú thích này thì trong Javadoc sẽ bị thêm vào thẻ @deprecated để cảnh báo cho người dùng.
Cú pháp:
// Javadoc comment follows
/**
* @deprecated
* explanation of why it was deprecated
*/
@Deprecated
static void deprecatedMethod() { }
Với các IDE lập trình ví dụ như Eclipse, nó sẽ thông báo cho lập trình viên 1 cách trực quan.
Ví dụ như trên parentMethod1 được đánh dấu @Deprecated java là gì? để thông báo với bạn rằng không nên sử dụng. Có thể sử dụng phương thức parentMethod2 thay thế (dùng @deprecated để mô tả chú thích).
2. @Override
Chú thích @Override thường được sử dụng cho các method ghi đè của method trong 1 class cha (superclass). Nếu method này không hợp lệ với 1 method trong class cha, trình biên dịch sẽ thông báo cho lập trình viên 1 lỗi.
Annotation @Override sẽ không bắt buộc phải chú thích trên method đã ghi đè method của class cha. Nhưng khi ghi đè 1 phương thức trong lớp con (sub-class), bạn nên sử dụng chú thích này để đánh dấu phương thức để giúp cho code dễ đọc hơn và tránh được các vấn đề khi bảo trì.
VD trong trường hợp có ai đó thay đổi tên method của class cha, method tại class con của bạn sẽ không còn là method ghi đè nữa. Nếu không có chú thích @Override thì bạn sẽ không tìm ra được nó. Với các chú thích @Override, trình biên dịch sẽ ném ra các lỗi biên dịch. Bạn phải thay đổi luôn cả tên phương thức được ghi đè ở lớp con (nơi chú thích này đang được áp dụng).
>> Tìm hiểu thêm: Override trong Java
Cú pháp:
// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }
Ví dụ:
Khi bạn thay đổi tên phương thức ở lớp cha, nếu lớp con không sử dụng chú thích @Override thì bạn sẽ khó biết được phương thức nào đang ghi đè phương thức ở lớp cha.
3. @SuppressWarnings
Chú thích này sẽ hướng dẫn cho trình biên dịch bỏ qua các cảnh báo cụ thể. VD, nếu trong 1 method có gọi tới 1 method khác đã lỗi thời, hay bên trong method có 1 ép kiểu không an toàn, trình biên dịch có thể tạo ra 1 cảnh báo. Bạn có thể tắt các cảnh báo bằng chú thích method này bằng @SuppressWarnings.
Cú pháp:
// compiler not to generate a warning @SuppressWarnings("deprecation") void useDeprecatedMethod() { // deprecation warning // - suppressed objectOne.deprecatedMethod(); }
Ví dụ:
Cụ thể trong ví dụ trên:
- @SuppressWarnings(“deprecation”) được dùng để thông báo trình biên dịch không cảnh báo việc sử dụng phương thức có sử dụng @Deprecation.
- @SuppressWarnings(“unchecked”) được dùng để thông báo trình biên dịch không cảnh báo việc sử 1 ép kiểu không an toàn.
- @SuppressWarnings(“rawtypes”) được dùng để thông báo trình biên dịch không cảnh báo việc khai báo kiểu dữ liệu không tường minh.
Kết luận
Trên đây là lời giải đáp cho câu hỏi Java Annotation là gì và một số Annotation sẵn có của Java mà CodeGym Hà Nội muốn giới thiệu đến quý vị bạn đọc. Hy vọng qua bài viết trên các bạn sẽ nắm được những Java Annotation phổ biến này và biết cách sử dụng nó một cách tối ưu nhất.
0 Lời bình