11

私のUTコードでは、以下を抽出すると、警告が表示されます:

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

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"))));
    }


}
4

1 に答える 1

18

これが Java 7+ の場合、使用しているライブラリはメソッドに@SafeVarargs. ただし、これはあなたの管理下にはありません。

それ以外の場合、このメソッドで未チェックの警告を回避する方法はありません。メソッドは基本的にパラメーター化された型の配列を必要とし、nullどこか (メソッドまたはあなたが呼び出す他のメソッド)。

または、 のドキュメントを見ると、代わりに of マッチャを取るCoreMatchersの代替オーバーロードを使用することを検討できるようです。動作確認無しでご利用いただけること。allOfIterable

于 2013-07-18T03:01:01.810 に答える