编译器不能停止抱怨这个调用:
EasyMock.anyObject(List.class)
我试图指定列表的类型
EasyMock.anyObject(List<MyType>.class)
但这似乎不是一个选项(无论如何,这很愚蠢,因为java会在编译期间擦除类型)
有没有一种干净的方法(@SuppressWarning 不是一种干净的方式 IMO)来删除这个警告?
谢谢
这是不可能的。我将其称为一般限制。遗憾的是,对于某些完全正常的用法(例如使用泛型类的类),并不总是可以删除警告。
但是,使用 EasyMock,您可以执行以下操作:
EasyMock.<List<MyType>> anyObject()
这将做同样的事情但没有警告。您使用的 anyObject 存在是因为它更具可读性并且允许静态导入。
仅作为建议:
interface A extends List<MyType> {};
EasyMock.anyObject(A.class)
您也可以尝试使用 Hamcrest 匹配器isA()
,而不是anyObject()
. 它们之间的区别在于isA
-matcher 检查 上的值null
,不像anyObject
. 您可以在此处了解有关这些匹配器的更多信息