如何从EasyMock.anyObject(List.class)调用中删除警告

时间:2010-10-06 17:56:35

标签: java generics warnings easymock

编译器不能停止抱怨这个电话:

EasyMock.anyObject(List.class) 

我尝试指定列表的类型

EasyMock.anyObject(List<MyType>.class)

但它似乎不是一个选项(无论如何,它是愚蠢的,因为java将在编译期间擦除类型)

是否有一种干净的方式(@SuppressWarning不是一种干净的IMO方式)来删除此警告?

谢谢

3 个答案:

答案 0 :(得分:59)

这是不可能的。我称之为通用限制。遗憾的是,并不总是可以删除一些完全正常使用的警告(比如使用泛型类的类)。

但是,使用EasyMock,您可以执行以下操作:

EasyMock.<List<MyType>> anyObject()

这将做同样的事情,但没有警告。您使用的anyObject存在,因为它更具可读性并允许静态导入。

答案 1 :(得分:4)

仅作为建议:

interface A extends List<MyType> {};
EasyMock.anyObject(A.class) 

答案 2 :(得分:0)

您也可以尝试使用Hamcrest匹配器anyObject(),而不是isA。它们之间的区别在于null - 匹配器检查anyObject上的值,与{{1}}不同。 您可以详细了解这些匹配器here