Я предполагаю, что entrySet.getValue()
возвращает ParameterRegistration<Object[]>
(в противном случае произошла бы ошибка компилятора). В таком случае
Object[] objects = (Object[])callOutputs.getOutputParameterValue(entrySet.getValue());
приводит Object[]
к Object[]
. getOutputParameterValue()
возвращает тип аргумента типа своего ввода (T
in ParameterRegistration<T>
), поэтому компилятор может проверить, что тип возвращаемого значения Object[]
, и вам не нужно явно приводить его.
Arrays.asList()
- это отдельная история.
Arrays.asList(Object[])
, как ожидается, вернет List<Object>
, потому что объявлен метод, принимающий массив типа T
, и возвращает List<T>
.
Если вы хотите, чтобы он был List<Object[]>
, вы можете принудительно установить его, добавив свидетель типа
List<Object[]> objectList = Arrays.<Object[]>asList(objects);
Это необходимо, только если у вас есть один аргумент (это не не нужно, если у вас есть что-то вроде Arrays.<Object[]>asList(objects, objects1, objects2)
)