k1e*_*ran 11 java generics hamcrest generic-collections
在我的UT代码中,在下面提取,我看到警告:
Unchecked generic array creation for varargs parameter of
type Matcher <? extends String> []
我已经在另一个stackoverflow中读到了关于使用varargs方法的泛型参数的问题.
但有没有一个简洁的方法来稍微重组这个测试,摆脱丑陋的警告,避免@SuppressWarnings
?
package stackoverflow;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.matchers.JUnitMatchers.containsString;
import static org.hamcrest.CoreMatchers.not;
public class FooTest {
@SuppressWarnings({"unchecked"})
@Test
public void sampleTest() {
Assert.assertThat("foo bar",
CoreMatchers.allOf(
containsString("foo"),
containsString("bar"),
not(containsString("baz"))));
}
}
Run Code Online (Sandbox Code Playgroud)
new*_*cct 17
如果这是Java 7+,那么您正在使用的库可以使用注释方法@SafeVarargs
.但是,这不在您的控制之下.
否则无法使用此方法避免未经检查的警告,因为该方法从根本上需要参数化类型的数组,并且如果null
没有在某处进行未经检查的操作,则无法获得此类型的非值(在您的方法或您调用的其他一些方法).
或者,查看文档CoreMatchers
,似乎您可以考虑使用替代的重载allOf
,这需要一个Iterable
匹配器.您可以使用没有未经检查的操作.
归档时间: |
|
查看次数: |
13713 次 |
最近记录: |