指定要模拟的通用接口的类

xto*_*ofl 5 java generics mocking mockito

我正试图用Mockito捕捉一个论点.这个论点属于类型List< MyClass >.但我找不到正确的语法来指定它.

可以这样做:

ArgumentCaptor< MyClass > captor = 
   ArgumentCaptor.forClass( MyClass.class );
Run Code Online (Sandbox Code Playgroud)

但我没有得到这个编译:

ArgumentCaptor< List<MyClass> > captor = 
   ArgumentCaptor.forClass( List<MyClass>.class );
Run Code Online (Sandbox Code Playgroud)

有办法吗?

And*_*rle 15

它应该使用@Captor注释:

@Captor
    private ArgumentCaptor<ArrayList<SomeType>> captor;
Run Code Online (Sandbox Code Playgroud)


Pau*_*ora 4

不幸的是,不会,.class只会返回Class<List>对象,其中List是原始类型。该实现并不完美,并且无法使用 获取嵌套类型信息.class。类似的东西List<Foo>.class是无效的语法,因为任何Class<List<Foo>>地方都不存在这样的对象。