我正在使用Mockito编写一些测试,以下是我正在使用的代码片段:
这段代码可以成功编译和运行,除了一个警告:“captor”是原始类型,建议将其替换为类似于以下内容的内容:
问题在于LinkedList<String>.class不存在,因此赋值语句的右侧永远无法编译通过。
假设抑制警告不够优雅,是否有更优雅的解决方案?如果没有,为什么编译器会警告我一个我实际上无法修复的问题?
ArgumentCaptor<LinkedList> captor = ArgumentCaptor.forClass(LinkedList.class);
这段代码可以成功编译和运行,除了一个警告:“captor”是原始类型,建议将其替换为类似于以下内容的内容:
ArgumentCaptor<LinkedList<String>> captor = ArgumentCaptor.forClass(LinkedList<String>.class);
问题在于LinkedList<String>.class不存在,因此赋值语句的右侧永远无法编译通过。
假设抑制警告不够优雅,是否有更优雅的解决方案?如果没有,为什么编译器会警告我一个我实际上无法修复的问题?
LinkedList<?>
吗? - jtahlbornextends
和super
等等),所以要庆幸它并没有更糟糕。如果要使它在没有警告的情况下编译通过,就需要让语言变得更加复杂(具体来说,LinkedList<String>.class
必须成为合法代码),所以从某种意义上说,你应该庆幸它不能工作。我认为你只需要压制这个警告,然后忘掉它。 - Paul BoddingtonTypeToken
方法并不合适,因为注解方法更加简洁。Captor API文档甚至特别提到了这种情况:“使用@Captor注解的优点之一是可以避免与捕获复杂泛型类型相关的警告。” - azurefrog