2010-10-06 28 views
28

trình biên dịch không thể ngừng phàn nàn với cuộc gọi này:Làm thế nào để loại bỏ các cảnh báo từ một EasyMock.anyObject (List.class) gọi

EasyMock.anyObject(List.class) 

tôi đã cố gắng để xác định loại danh sách của

EasyMock.anyObject(List<MyType>.class) 

nhưng nó không có vẻ là một lựa chọn (anyway, nó là ngu ngốc vì java sẽ xóa các loại trong quá trình biên dịch)

Có cách nào sạch (@SuppressWarning không phải là một cách rõ ràng IMO) để loại bỏ cảnh báo này?

Cảm ơn bạn

+0

cảnh báo nào? và trình biên dịch nào? – irreputable

Trả lời

55

Đó là điều không thể. Tôi sẽ gọi nó là một giới hạn chung. Đáng buồn là không phải lúc nào cũng có thể loại bỏ một cảnh báo cho một số cách sử dụng hoàn toàn bình thường (như sử dụng lớp của một lớp chung).

Tuy nhiên, với EasyMock bạn có thể làm như sau:

EasyMock.<List<MyType>> anyObject() 

mà sẽ làm điều tương tự nhưng không có cảnh báo. AnyObject bạn sử dụng tồn tại vì nó dễ đọc hơn và cho phép nhập tĩnh.

+0

+1 Mặc dù có vẻ như điều này đang xóa kiểm tra trên _type_ của tham số, EasyMock vẫn không thực hiện việc kiểm tra đó. Vì vậy, để EasyMock, điều này là tương đương. – Gray

+1

Có một tham chiếu hoặc giải thích rộng hơn về cú pháp trên thực sự đang thực hiện không? –

+0

Nếu bạn đang sử dụng Java 8 trở lên, chỉ cần sử dụng 'EasyMock.anyObject()' sẽ hoạt động. –

4

Chỉ như gợi ý:

interface A extends List<MyType> {}; 
EasyMock.anyObject(A.class) 
Các vấn đề liên quan