Я ищу способ заставить фиктивную функцию возвращать разные значения в зависимости от общего типа ее параметра. Например, если параметром является любой экземпляр Generic<Foo>
, сделайте что-нибудь, а если параметром является любой экземпляр Generic<Bar>
, сделайте что-нибудь еще.
Я думал, что смогу сделать это, используя следующий код:
@Mock
private Getter getter;
@Rule
public final Mocks mocks = new Mocks(this);
@Test
public void testSearch(){
doReturn("Foo<Boolean>").when(getter).getValue(Matchers.<Foo<Boolean>>any());
doReturn("Foo<String>").when(getter).getValue(Matchers.<Foo<String>>any());
System.out.println(getter.getValue(new Foo<Boolean>()));
System.out.println(getter.getValue(new Foo<String>()));
}
public static class Foo<T> {
}
public class Getter {
<T> String getValue(BumapinRefOdsHandlerTest.Foo<T> foo) {
return "not-used";
}
}
Однако код печатает
Foo<String>
Foo<String>
Как правильно сопоставить параметры на основе универсального типа?