ArrayList<String>.class
- это конструкция, не поддерживаемая компилятором Java.
Для первой попытки вы должны сделать следующее:
@SuppressWarnings( "unchecked" )
ArrayList<String> mocked = mock(ArrayList.class);
Это происходит потому, что метод mock
может возвращать только необработанный тип. В общем случае не рекомендуется использовать необработанные типы, поскольку это может привести к ошибкам во время выполнения. В вашем случае это совершенно нормально, потому что вы знаете, что mocked
не является РЕАЛЬНЫМ ArrayList<String>
.
Просто общий совет по поводу @SuppressWarnings( "unchecked" )
аннотации. Постарайтесь держать его как можно ближе к источнику проблемы. Например, вы можете поместить его только для объявления переменной, или вы можете подавить его для всего метода. В общем случае подавьте его для переменной, поскольку в противном случае широкая аннотация метода может подавить другие проблемы в вашей функции.