40

Tôi nhận được một biên dịch cảnh báo cho @SuppressWarnings chú thích trong nhật thực cho mã:@SuppressWarnings không cần thiết ("không sử dụng")

@Override 
public boolean doSomething(@SuppressWarnings("unused") String whatever) throws AnException { 
    throw new AnException("I'm still in bed and can't do anything until I've had a shower!"); 
} 

Nó trông giống như một squiggle vàng dưới chữ "không sử dụng" và trên chuột di chuột Tôi nhận được chú giải công cụ Unnecessary @SuppressWarnings("unused").

Tôi nghĩ một nhà phát triển khác đang được nhắc đưa vào các chú thích này bằng nhật thực và tôi về cơ bản đang được nhắc đưa chúng ra. Làm thế nào tôi có thể cấu hình nhật thực để nhắc tôi đặt chú thích @SuppressWarnings vào thay vì nó phàn nàn về nó?

Nếu có ai muốn nhận xét về thực tiễn tốt nhất ở đây thì điều đó cũng sẽ được chào đón nhiều nhất.

+5

Nó thực sự phụ thuộc vào nếu bạn thích nhìn thấy các đường kẻ sọc trong mã của bạn. Nó làm tôi phát điên. – Jivings

Trả lời

41

Trong mã trong câu hỏi của bạn, chú thích @SuppressWarnings("unused") là không cần thiết vì phương pháp là ghi đè phương thức khác từ siêu lớp hoặc triển khai giao diện. Ngay cả khi bạn không thực sự sử dụng tham số whatever thì bắt buộc phải khai báo nó, nếu không chú thích @Override sẽ tạo ra lỗi (bạn sẽ thay đổi chữ ký của phương thức ghi đè nếu bạn đã xóa tham số.)

Trong một số các phiên bản cũ hơn của Eclipse mã như được hiển thị sẽ không gây ra cảnh báo, nhưng trong các bản phát hành gần đây hơn nó. Tôi tin rằng đó là cảnh báo hợp lệ và tôi muốn xóa @SuppressWarnings("unused") trong trường hợp này.

+3

Hơn nữa, trong các phiên bản gần đây cảnh báo "không sử dụng" đã trở nên tinh tế hơn - nếu có chú thích với chính sách lưu giữ thời gian chạy được đính kèm theo phương pháp, cảnh báo không được sử dụng bị chặn (vì nó nên). –

22

Đến

WindowPreferencesJavaCompilerlỗi/cảnh báoChú thích.

Và chọn Bỏ qua cho chưa sử dụng '@ SuppressWarnings` thẻ.

5

Ngoài ra, nếu bạn nghĩ rằng nó là chính xác hơn để xóa các SuppressWarnings chú thích:

Window -> Preferences -> Java -> Compiler -> lỗi/cảnh báo -> Mã không cần thiết -> Giá trị của tham số không được sử dụng

và chọn Bỏ qua trong trọng và thực hiện các phương pháp

5

trong mã của tôi không có kế thừa quy định 3 phương pháp với @SuppressWarnings ("không sử dụng")

Mã này cung cấp 'Unnecessary @SuppressWarnings ("unused")' trong Eclipse Juno (phiên bản mới nhất), nhưng nếu tôi xóa @SuppressWarnings ("unused"), tôi nhận được "Constructor/Method is never used" cảnh báo trong IntelliJ IDEA 11.1 .3

các phương pháp không được sử dụng trực tiếp trong dự án, chỉ bởi sản phẩm của bên thứ 3 Jackson, JAXB & GSON, vì vậy IntelliJ là đúng, tôi sẽ nói ...

public class EmailUnsendable extends SkjemaError { 

    private NestedCommand command;  // Can't be Command (interface) because of GSON! 

    @SuppressWarnings("unused")   // Used by Jackson/JAXB/GSON 
    public EmailUnsendable() { 
    } 

    public EmailUnsendable(String referenceNumber, String stackTrace, NestedCommand command) { 
     super(referenceNumber, stackTrace); 
     this.command = command; 
    } 

    @SuppressWarnings("unused")   // Used by Jackson/JAXB/GSON 
    public NestedCommand getCommand() { 
     return command; 
    } 

    @SuppressWarnings("unused")   // Used by Jackson/JAXB/GSON 
    public void setCommand(NestedCommand command) { 
     this.command = command; 
    } 
} 

tôi tin rằng đây là một lỗi trong Eclipse.

+3

Doh, tôi đã cố gắng gửi lỗi trên eclipse.org, nhưng trang web quá phức tạp - hy vọng rằng ai đó cung cấp cho họ báo cáo lỗi này –

+2

Tôi thấy điều này thật vui nhộn. Bạn đã chuyển sang IntelliJ chưa? –

+1

Tôi sẽ nói Eclipse là đúng. Việc truy cập các nhà xây dựng no-arg công khai thông qua sự phản chiếu là một mô hình thường xuyên trong Java - giống như ở đây, trên thực tế. –