EasyMock / Arrays.asList(...)仅具有一个varagrs参数

时间:2018-11-21 13:27:22

标签: java easymock

我们最近从Oracle JDK 8切换到了OpenJDK 11,在以下情况下,我遇到了奇怪的行为:

final List<Interface> foo = Arrays.asList(EasyMock.mock(Interface.class))

通过JUnit在单元测试中运行时,出现以下异常:

com.sun.proxy。$ Proxy225类不能转换为[Lorg.example.Interface; (com.sun.proxy。$ Proxy225和[Lorg.example.Interface;位于加载程序'app'的未命名模块中)

EasyMock版本是最新版本(4.0.1)。

确定我应该使用Collections.singletonList(...),这也是Java9以来编译和运行的东西! List.of(...),是的。

我并没有真正解决问题,但是我认为这与Java 11的EasyMock有关。

1 个答案:

答案 0 :(得分:1)

这是类型推断问题。这是由EasyMock进行类型推断的新方法引起的。在很多情况下,它都可以提供极大的帮助,但这是一个无法转换为正确类型的示例。

解决方案是使用类型见证。这将起作用:List<Interface> foo = Arrays.asList(EasyMock.<Interface, Interface>mock(Interface.class));