Generics Mockito-使用集合时的ClassCastException

Generics Mockito-使用集合时的ClassCastException,generics,mockito,Generics,Mockito,当用一个以集合作为参数的方法模拟类时,我遇到了一个令人费解的问题 public class Foo { public Foo () { } public boolean doSomething(List<Bar> bars) { return true; } } public class Bar { public Bar() {} } 我得到: Mockito can only mock visible & non-fin

当用一个以集合作为参数的方法模拟类时,我遇到了一个令人费解的问题

public class Foo {
    public Foo () { }

    public boolean doSomething(List<Bar> bars) {
        return true;
    }
}

public class Bar {
    public Bar() {}
}
我得到:

Mockito can only mock visible & non-final classes.
If you are not sure...

Underlying exception : java.lang.IllegalArgumentException: java.lang.ClassCastExcception@1ba9917e
...
对于简短的错误描述,很抱歉,我必须从脱机终端手动复制

当我将
doSomething()
方法的参数更改为just
doSomething(Bar)
时,它成功地创建了模拟


最后一件奇怪的事情是,它不会在其他工作站上重现。

经过多次尝试和错误,这两台机器之间唯一的区别就是JDK版本。在它不工作的机器上,我们有1.8.0_05。更新到1.8.0_45修复了它。

嗯,
do
是Java中的一个关键字(
do-while
loop)。如果用关键字命名方法会导致一些奇怪的错误,我不会感到惊讶。我的错误,@peter,我想写一些通用函数名。我在没有编译器的情况下直接键入,因为我无法粘贴代码。。updated@Sagi:您似乎通知了错误的用户。“Mockito只能模拟可见和非最终类”,这就是问题所在(在您的“真实”代码中)。
Mockito can only mock visible & non-final classes.
If you are not sure...

Underlying exception : java.lang.IllegalArgumentException: java.lang.ClassCastExcception@1ba9917e
...