34

编译器不能停止抱怨这个调用:

EasyMock.anyObject(List.class) 

我试图指定列表的类型

EasyMock.anyObject(List<MyType>.class)

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

有没有一种干净的方法(@SuppressWarning 不是一种干净的方式 IMO)来删除这个警告?

谢谢

4

3 回答 3

63

这是不可能的。我将其称为一般限制。遗憾的是,对于某些完全正常的用法(例如使用泛型类的类),并不总是可以删除警告。

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

EasyMock.<List<MyType>> anyObject()

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

于 2010-10-07T20:40:54.130 回答
4

仅作为建议:

interface A extends List<MyType> {};
EasyMock.anyObject(A.class) 
于 2010-10-06T18:08:31.930 回答
0

您也可以尝试使用 Hamcrest 匹配器isA(),而不是anyObject(). 它们之间的区别在于isA-matcher 检查 上的值null,不像anyObject. 您可以在此处了解有关这些匹配器的更多信息

于 2018-06-14T17:39:17.283 回答