如何获取lambda表达式的特定类,例如方法参数中类型的子类
我试图为mockito测试添加一个定制的如何获取lambda表达式的特定类,例如方法参数中类型的子类,lambda,mockito,Lambda,Mockito,我试图为mockito测试添加一个定制的ArgumentMatcher(Matcher的子类),下面是代码: when(mockedObject.mockedMethod( argThat((int id)-> id > 5 || id < 1 ? false : true))); 我能告诉编译器我想在lambda表达式中使用ArgumentMatcher,而不是Matcher吗 谢谢 不,你想要的是不可能的org.hamcrest.Matcher不是一个功能接口。它有
ArgumentMatcher(Matcher的子类)
,下面是代码:
when(mockedObject.mockedMethod(
argThat((int id)-> id > 5 || id < 1 ? false : true)));
我能告诉编译器我想在lambda表达式中使用ArgumentMatcher
,而不是Matcher吗
谢谢 不,你想要的是不可能的
org.hamcrest.Matcher
不是一个功能接口。它有多个非抽象方法。例如,以下任何一项:
org.hamcrest.selfdescription.descripbeto(Description)
org.hamcrest.Matcher.matches(对象)
ArgumentMatcher
本身已经是一个类了
作为一种解决方法,您可以创建自己版本的argat
,它接收java.util.function.Predicate
,并将其转换为Matcher
实现。但是,您将失去对自描述的支持,不得不忍受糟糕的故障描述
public static <T> T argThat(Matcher<T> matcher)