he declarado lo siguiente método:advertencia para varargs genéricos
private void mockInvokeDBHandler(Map<String, Object>... rows) {
List<Map<String, Object>> allRows = Arrays.asList(rows));
// rest of method omitted
}
Se invoca por los clientes que utilizan algo así como
Map<String, Object> row1 = new HashMap<String, Object>();
Map<String, Object> row2 = new HashMap<String, Object>();
mockInvokeDBHandler(row1, row2);
Sin embargo, la última línea se muestra más arriba genera una advertencia
Tipo de seguridad: se crea una matriz genérica de Mapa para un parámetro varargs
No entiendo completamente esto, pero supongo que es porque los parámetros varargs se convierten en matrices, y es una mala idea tener una matriz cuyo tipo es una clase genérica (porque los genéricos son invariables, mientras que los arreglos no son)
pude resolver este problema mediante el método redifining como
private void mockInvokeDBHandler(List<Map<String, Object>> rows) {
}
Pero esto impone la carga de poner los objetos de fila en una lista en el cliente, que prefiero evitar. ¿Hay una mejor solución?
EN MIEMBRA Usted podría simplemente ignorar la advertencia. –
Estoy seguro de que su código real se compila pero parece que tiene un error de publicación aquí: 'ListMap allRows', como debería ser' List
@Mark E - gracias, el código está bien, acaba de hacer un error en mi publicación –