2011-11-04 14 views
16

Có vẻ như quá mức khi chú thích áp dụng cho một phương pháp.Làm cách nào để chú thích bằng @SuppressWarnings ("bỏ chọn") cho một dàn diễn viên thay vì toàn bộ phương pháp?

Làm cách nào để sử dụng chú thích @SuppressWarnings ("bỏ chọn") cho một dàn diễn viên thay vì toàn bộ phương pháp?

Trong ví dụ này, tôi vừa hoàn thành việc kiểm tra xem dàn diễn viên có an toàn không và vì vậy tôi tiếp tục truyền nhưng tôi nhận được cảnh báo gây phiền nhiễu.

@Override 
public void execDetails() 
{ 
    Map<Integer, ResponseList<?>> responseMap = 
      new HashMap<Integer, ResponseList<?>>(); 

    // ... omitted code ... 

    ResponseList<?> responseList = responseMap.get(requestId); 
    Class<?> elementType = responseList.getElementType(); 
    if (elementType == ExecutionDetail.class) 
     ((ResponseList<ExecutionDetail>)responseList).add(new ExecutionDetail()); 

} 

Trả lời

28

Bạn có thể sử dụng @SuppressWarnings cho một khai báo biến duy nhất:

public static List<String> foo(List<?> list) { 
    List<String> bad = (List<String>) list; 

    @SuppressWarnings("unchecked") 
    List<String> good = (List<String>) list; 
    return good; 
} 

Nó phải được tại thời điểm khai báo biến cục bộ mặc dù:

Chú thích có thể được sử dụng như bổ ngữ trong bất kỳ tuyên bố , cho dù gói (§7.4), lớp (§8), giao diện, trường (§8.3, §9.3), phương thức (§8.4, §9.4), tham số, hàm tạo (§8.8) hoặc biến cục bộ (§14.4).

+3

Dường như chú thích chỉ giúp khi diễn viên và tuyên bố biến nằm trong cùng một tuyên bố. – H2ONaCl

+0

@broiyan: Vâng, điều đó sẽ không làm tôi ngạc nhiên - nhưng bạn luôn có thể giới thiệu một biến địa phương bổ sung chỉ vì mục đích đó :) –

+0

Điều đó có thể rất xấu trong một khối chuyển đổi vì phạm vi chia sẻ. – shmosel

2

Bạn có thể trích xuất phương thức cho một dòng đó và chặn cho dòng/phương thức đó.

Nhiều công cụ/id có cách riêng để thực hiện việc này, chẳng hạn như đặt chú thích trên biến cục bộ, nhưng tôi không tin tất cả các trình biên dịch đều hỗ trợ điều này.

Các vấn đề liên quan