"Ungeprüfte generische Array-Erstellung für varargs-Parameter vom Typ Matcher? erweitert String [] "Warnung mit CoreMatchers.allOf ()

8

In meinem UT-Code, unten extrahiert, sehe ich eine Warnung:

  

Unchecked generic array creation for varargs parameter of
type Matcher <? extends String> []

Ich habe in einer anderen Stackoverflow-Antwort über die Probleme mit einem generischen Parameter zu einer varargs-Methode gelesen.

Aber gibt es eine gute Möglichkeit, diesen Test etwas zu restrukturieren, um die hässliche Warnung loszuwerden und @SuppressWarnings zu vermeiden?

%Vor%     
k1eran 16.07.2013, 14:32
quelle

1 Antwort

13

Wenn dies Java 7+ ist, kann die von Ihnen verwendete Bibliothek die Methode mit @SafeVarargs annotieren. Dies steht jedoch nicht unter Ihrer Kontrolle.

Andernfalls gibt es keine Möglichkeit, eine ungeprüfte Warnung mit dieser Methode zu vermeiden, da die Methode grundsätzlich ein Array eines parametrisierten Typs benötigt und es unmöglich ist, einen nicht null -Wert dieses Typs ohne eine ungeprüfte Operation irgendwo zu erhalten (entweder in Ihrer Methode oder in einer anderen von Ihnen aufgerufenen Methode).

Oder, wenn Sie sich die Dokumentation für CoreMatchers ansehen, scheint es, dass Sie die alternative Überladung von allOf in Betracht ziehen könnten, die statt dessen einen Iterable von Matcher benötigt. Das können Sie ohne ungeprüfte Operationen verwenden.

    
newacct 18.07.2013, 03:01
quelle