2010-10-06 165 views
28

编译器不能停止与该调用抱怨:如何删除从EasyMock.anyObject(List.class)警告称

EasyMock.anyObject(List.class) 

我试图指定列表的类型

EasyMock.anyObject(List<MyType>.class) 

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

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

谢谢

+0

什么警告?和哪个编译器? – irreputable 2010-10-06 18:40:57

回答

55

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

然而,EasyMock的,你可以做到以下几点:

EasyMock.<List<MyType>> anyObject() 

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

+0

+1虽然看起来这是删除参数_type_的检查,但EasyMock并没有做这个检查。所以对于EasyMock来说,这是等同的。 – Gray 2014-01-31 16:57:51

+1

有没有可用的参考或更广泛的解释说明上面的语法实际上在做什么? – 2014-07-30 18:58:19

+0

如果你使用Java 8或更高版本,只需使用'EasyMock.anyObject()'就可以工作。 – 2017-08-23 16:30:36

4

仅作为建议:

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