我有一个I / F
public interface NumberIF {
public Integer getNumber();
}
当我尝试调用以下函数时;
public void func(NumberIF data)
我使用lambda
的以下方式 func(() -> 5)
问题在于我无法将上述功能与JMockit期望相匹配......
new Expectations() { { someclass.func(() -> 5); }
对于Callable<T>
个对象,.equals
方法总是比较某种id号而不是存储在其中的文字对象。这个问题有解决方法吗?
答案 0 :(得分:1)
JMockit
使用equals
方法(默认情况下比较对象ID)匹配期望/验证块中的参数。
在您的示例中,lambda表达式(() -> 5
)创建的对象未实现equals
方法,因此会比较对象ID。
结论:如果你真的想要比较Callable<T>
个对象,你必须在具体实现中实现equals
,或者你需要确保在期望块中使用相同的实例。在您的&#39;生产代码&#39;调用