estoy usando la reflexión para llamar a un método en a class that is dynamically constructed at runtime:método de llamada a través de la reflexión, cuando el argumento es de tipo Object []
public String createJDBCProvider(Object[] args)
Así es como:
Method m = adminTask.getClass().getMethod("createJDBCProvider", Object[].class);
id = (String) m.invoke(adminTask, new Object[]{ "a", "b", "c" });
idea me advierte que estoy culpable de redundant array creation for calling varargs method
.
El método que estoy llamando en realidad toma un Object[]
, no Object ...
, pero probablemente sean equivalentes e intercambiables, creo, así que sigo adelante.
En tiempo de ejecución me sale:
java.lang.IllegalArgumentException: wrong number of arguments
por lo que parece que, tal vez, mi Object[]
se está pasando como una secuencia de Object
s. ¿Esto es lo que está pasando? Si es así, ¿cómo puedo obligarlo a que no lo haga?
¿Qué pones en lugar del '...' en el código real es la parte más relevante. ¿Podría mostrar qué hay en su código real? – dasblinkenlight
Solo cuerdas. Actualizado. – Synesso
Varargs en Java es solo azúcar sintáctico. El compilador convierte 'Objeto ...' en 'Objeto []'. Entonces sí, son equivalentes. –