Voici un exemple de codeComment dire une méthode a un argument varargs en utilisant la réflexion?
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 sortie est
public void org.example.TestRef.testA(java.lang.String[])
Ainsi, la signature de la méthode est signalé à prendre un ensemble de cordes.
Y at-il une moyenne dans la bibliothèque de réflexion, je peux dire que la méthode est à l'origine déclaré pour prendre un varargs?
Il convient également de noter que method.getModifiers() aura le bit Modifier.TRANSIENT défini pour une méthode varargs. – ILMTitan
@ILMTitan - Je ne vois pas pourquoi cela vaut la peine d'être noté. Le modificateur 'transient' n'est pas significatif pour une méthode. Le bit n'est défini que parce que le bit correspondant du classfile est utilisé pour différentes choses dans des contextes différents; c'est-à-dire que les bits TRANSIENT et VARARGS sont du même bit. –