EasyMock:如何在没有警告的情况下创建泛型化类的模拟?
代码
private SomeClass<Integer> someClass;
someClass = EasyMock.createMock(SomeClass.class);
给我一个警告“类型安全:SomeClass类型的表达式需要未经检查的转换才能符合SomeClass<Integer>”。
代码
private SomeClass<Integer> someClass;
someClass = EasyMock.createMock(SomeClass.class);
给我一个警告“类型安全:SomeClass类型的表达式需要未经检查的转换才能符合SomeClass<Integer>”。
AFAIK,当涉及类名文本时,您无法避免未选中的警告,而注释是处理此问题的唯一方法。SuppressWarnings
请注意,尽可能缩小注释范围是一种很好的形式。您可以将此注释应用于单个局部变量赋值:SuppressWarnings
public void testSomething() {
@SuppressWarnings("unchecked")
Foo<Integer> foo = EasyMock.createMock(Foo.class);
// Rest of test method may still expose other warnings
}
或使用帮助程序方法:
@SuppressWarnings("unchecked")
private static <T> Foo<T> createFooMock() {
return (Foo<T>)EasyMock.createMock(Foo.class);
}
public void testSomething() {
Foo<String> foo = createFooMock();
// Rest of test method may still expose other warnings
}
我通过引入一个子类来解决这个问题,例如
private abstract class MySpecialString implements MySpecial<String>{};
然后创建该抽象类的模拟:
MySpecial<String> myMock = createControl().createMock(MySpecialString.class);