“Unchecked générique de la création de la matrice pour les varargs paramètre de type Comparateur de <? s'étend String> []” avertissement l'utilisation d'CoreMatchers.allOf()
Dans mon UT code, l'extrait ci-dessous, je vois avertissement :
Unchecked generic array creation for varargs parameter of
type Matcher <? extends String> []
J'ai lu dans un autre stackoverflow répondre sur les problèmes à l'aide d'un paramètre générique d'un varargs méthode.
Mais est-il un moyen sympa de légèrement restructurer ce test pour se débarrasser du vilain d'avertissement et d'éviter @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"))));
}
}
OriginalL'auteur k1eran | 2013-07-16
Vous devez vous connecter pour publier un commentaire.
Si c'est Java 7+, puis la bibliothèque que vous utilisez peut annoter la méthode avec
@SafeVarargs
. Cependant, ce n'est pas sous votre contrôle.Sinon il n'y a aucun moyen d'éviter une décoché avertissement avec cette méthode, parce que la méthode fondamentalement nécessite un tableau d'un type paramétré, et il est impossible d'obtenir un non-
null
valeur de ce type sans décoché opération quelque part (que ce soit dans votre méthode ou d'une autre méthode que vous appelez).Ou, en examinant la documentation de
CoreMatchers
, il semble que vous pourriez envisager d'utiliser l'autre surcharge de laallOf
, qui prend unIterable
de les allumettes à la place. Que vous pouvez utiliser sans décoché opérations.@SafeVarargs
est réglé sur final méthode, qui n'est pas possible de cours sur les interfaces.OriginalL'auteur newacct