@SuppressWarnings annotation trong Java

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách sử dụng @SuppressWarnings annotation trong Java.

@SuppressWarnings annotation

Khi biên dịch mã nguồn Java thì trình biên dịch sẽ cảnh báo một số điểm bất thường các lỗ hỏng hoặc các mã nguồn xấu cho chúng ta. Việc này thông thường rất hữu ích, nó giúp giúp ta phát hiện và sửa lỗi một cách nhanh chóng.

Tuy nhiên có một số trường hợp các cảnh báo này là không cần thiết do chúng ta đã hiểu rõ vấn đề mà trình biên dịch đang báo, và đặc biệt là không muốn giải quyết chúng. 

public class Machine {
    private List versions;

    public void addVersion(String version) {
        versions.add(version);
    }
}

Với đoạn mã trên, trình biên dịch sẽ phát đi một cảnh báo rằng chúng ta đang sử dụng một collection raw-type. Nếu chúng ta không muốn sửa code dựa theo cảnh báo này thì chúng ta có thể ẩn nó bằng cách sử dụng @SuppressWarnings annotation.

Annotation này cho phép chúng ta bỏ qua các cảnh báo được chú thích. Mặc dù các loại cảnh báo có thể khác nhau tùy theo nhà cung cấp trình biên dịch.

Trong đó @SuppressWanrning thường đi với 2 giá trị deprecation unchecked.

  • deprecation sẽ thông báo với trình biên dịch rằng hãy bỏ qua các cảnh báo khi chúng ta sử dụng một method hoặc một kiểu dữ liệu mà trong tương lai sẽ không còn sử dụng nữa.
  • unchecked thông báo với trình biên dịch rằng hãy bỏ qua các cảnh báo về việc sử dụng raw-type.

Do vậy, chúng ta có thể bỏ qua các cảnh báo về việc sử dụng raw-type bằng cách:

public class Machine {
    private List versions;

    @SuppressWarnings("unchecked")
    // or
    @SuppressWarnings({"unchecked"})
    public void addVersion(String version) {
        versions.add(version);
    

Để loại bỏ danh sách nhiều cảnh báo, chúng ta đặt một array chứa danh sách giá trị tương ứng:

 

@SuppressWarnings({"unchecked", "deprecated"})

Nguồn

https://www.baeldung.com/java-suppresswarnings

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x