2010-04-15 17 views
7

Tôi đang sử dụng JSON.simple để tạo đầu ra JSON từ Java. Nhưng mỗi khi tôi gọi jsonobj.put ("this", "that"), tôi thấy một cảnh báo trong Eclipse:Làm thế nào để tránh cảnh báo Eclipse khi sử dụng mã cũ mà không có generics?

An toàn loại: Phương thức đưa (Object, Object) thuộc về kiểu thô HashMap. Các tham chiếu đến kiểu chung HashMap phải được tham số hóa

Sửa chữa sạch sẽ là nếu JSONObject được genericized, nhưng vì không, tôi không thể thêm bất kỳ thông số kiểu chung nào để sửa lỗi này. Tôi muốn tắt càng ít cảnh báo càng tốt, vì vậy việc thêm "@SuppressWarnings (" unchecked ")" vào nhiều phương thức không hấp dẫn, nhưng tôi có tùy chọn nào khác ngoài việc đưa ra cảnh báo không?

Trả lời

7

Đây là một tùy chọn. Đó là một chút xấu xí, nhưng cho phép bạn phạm vi cảnh báo bị đàn áp để chỉ hoạt động cá nhân đó.

Thêm một chức năng mà làm các diễn viên được kiểm soát, và ngăn chặn cảnh báo về nó:

@SuppressWarnings("unchecked") 
private final static Map<Object,Object> asMap(JSONObject j) 
{ 
    return j; 
} 

Sau đó, bạn có thể gọi nó mà không có cảnh báo trình biên dịch:

asMap(jsonobj).put("this", "that"); 

Bằng cách này, bạn có thể chắc chắn rằng bạn không kìm nén bất kỳ cảnh báo nào mà bạn thực sự muốn xem.

+0

Trong Netbeans, trả về một số cảnh báo KHÁC cho tôi: > Phương pháp riêng aMap được khai báo cuối cùng > Phương pháp riêng aMap được khai báo tĩnh – user919860

4

bạn có thể có cài đặt trình biên dịch cho mỗi dự án và bạn có thể thay đổi các cảnh báo đó thành bỏ qua.

+3

Thậm chí còn cực đoan hơn việc thêm @SuppressWarnings ("không được kiểm soát") vào các phương pháp có liên quan; vấn đề của tôi là tôi muốn thấy càng nhiều cảnh báo càng tốt trong khi loại bỏ cảnh báo này. –

+0

bạn có thể chặn cảnh báo cụ thể này trong cấu hình dự án cũ của mình. không có gì cực đoan về nó. –

+0

nó cực đoan vì dự án * của anh ấy không phải là di sản, chỉ là thư viện mà anh ta đang tham chiếu. Đề nghị của bạn là cho toàn bộ dự án của mình để ngăn chặn các cảnh báo. – Kip

4

Viết một số phương thức trợ giúp hoặc lớp trình bao bọc cho thư viện. Chỉ thêm @SuppressWarnings("unchecked") vào những người trợ giúp đó. Sau đó, sử dụng những người trợ giúp để thực hiện tương tác với thư viện.

+0

Điều này có vẻ là giải pháp tốt nhất cho đến nay, cảm ơn. Eclipse chỉ là sai khi cảnh báo tôi về điều này, phải không? Các lỗi này phải nằm trong mã JSONObject, không phải mã của tôi. –

+0

@Paul: Eclipse đúng, vì đó là cách nó được chỉ định cho Java. Bạn nhận được cảnh báo, bởi vì bạn đang sử dụng một phương thức thô từ HashMap (bạn buộc phải làm điều đó, vì JSONObject mở rộng HashMap). –

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