0

ここで、https://github.com/junit-team/junit/wiki/Assertionsを見てください:

public void testAssertThatHamcrestCoreMatchers() {
    assertThat("good", allOf(equalTo("good"), startsWith("good")));
    assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));
    assertThat("good", anyOf(equalTo("bad"), equalTo("good")));
    assertThat(7, not(CombinableMatcher.<Integer> either(equalTo(3)).or(equalTo(4))));
    assertThat(new Object(), not(sameInstance(new Object())));
}

5行目、CombinableMatcher.<Integer>有効ですか?私はjava6で試してみましたが、失敗しました。それは新しい文法ですか、それとも単純なタイプミスですか?

4

1 に答える 1

0
public static void main(String[] args) {
    java.util.ArrayList<Box<Integer>> listOfIntegerBoxes =
      new java.util.ArrayList<>();
    BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);
    BoxDemo.addBox(Integer.valueOf(20), listOfIntegerBoxes);
    BoxDemo.addBox(Integer.valueOf(30), listOfIntegerBoxes);
    BoxDemo.outputBoxes(listOfIntegerBoxes);
  }

ジェネリック メソッド addBox は、U という名前の 1 つの型パラメーターを定義します。一般に、Java コンパイラーは、ジェネリック メソッド呼び出しの型パラメーターを推測できます。したがって、ほとんどの場合、それらを指定する必要はありません。たとえば、ジェネリック メソッド addBox を呼び出すには、型パラメーターを次のように指定できます。

BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);

ソース: http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html

于 2013-05-29T09:40:18.300 に答える