gpt4 book ai didi

java - 与 varargs() 匹配会产生编译错误

转载 作者:行者123 更新时间:2023-11-30 09:15:42 24 4
gpt4 key购买 nike

我正在尝试模拟一个类,该类具有接受可变数量参数的方法。以下是示例代码-

class MyClass{
public List<String> getMulti(String... keys){//}
}
MyClass mc = mock(MyClass.class);
when(mc.getmValues(anyVararg())).thenReturn(someList);

但是请注意,使用这段代码我会得到一个编译错误——MyClass 类型中的方法 getMulti(String...) 不适用于参数 (Object)。有人可以帮我解决这个问题吗?

此外,在尝试 anyVararg() 之前,我使用了以下方法。但是,匹配器不起作用,方法 getmValues 没有返回“someList”(它返回一个空列表)。

when(mc.getmValues(any(String[].class))).thenReturn(someList);

并且该方法是使用 String[] 调用的。

也希望能在这方面提供帮助(关于我可能做错了什么)。

谢谢尼利什

最佳答案

如果你将 anyVararg() 转换为 String[] 你应该没有问题:

@Test
public void myTest(){
List<String> expectedList = new ArrayList<>();
MyClass mc = mock(MyClass.class);
when(mc.getMulti((String[]) anyVararg())).thenReturn(expectedList);
assertSame(expectedList, mc.getMulti(""));
}

编辑(这不适合下面的评论)

大多数人都不知道 IDE 具有许多很酷的功能,这些功能旨在让我们的生活更轻松。比如Eclipse中的CTRL+1,IDEA中的ALT+ENTER就是“对当前问题的建议”的快捷键。因此,只需在编辑器中单击 anyVararg(),使用快捷方式,您将看到建议的修复列表,包括转换为 String[]。

还有更多来源(Productive Eclipse ShorcutsDZone's Effective Eclipse Shortcuts),因此您应该尝试修改您的“工具”。

关于java - 与 varargs() 匹配会产生编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com