Aquí hay un código de ejemplo¿Cómo decir que un método tiene un argumento varargs usando reflection?
package org.example;
import java.lang.reflect.Method;
class TestRef {
public void testA(String ... a) {
for (String i : a) {
System.out.println(i);
}
}
public static void main(String[] args){
Class testRefClass = TestRef.class;
for (Method m: testRefClass.getMethods()) {
if (m.getName() == "testA") {
System.out.println(m);
}
}
}
}
La salida es
public void org.example.TestRef.testA(java.lang.String[])
Así la firma del método se informó a tomar una serie de cuerdas.
¿Hay algún medio en la biblioteca de reflexión que pueda decir que el método es originalmente declarado tomar una varargs?
También se debe tener en cuenta que method.getModifiers() tendrá el bit Modifier.TRANSIENT establecido para un método varargs. – ILMTitan
@ILMTitan - No veo por qué vale la pena señalarlo. El modificador 'transitorio' no es significativo para un método. El bit solo se establece porque el bit de indicador del archivo de clase correspondiente se usa para diferentes cosas en diferentes contextos; es decir, los bits TRANSITORIO y VARÁRGICO son el mismo bit. –