2016-03-21 1 views
1

Comment obtenir un nom de paramètre passé, c'est-à-dire le nom avec lequel il a été transmis lors de l'exécution?Obtention du nom du paramètre passé en Java?

Par exemple:

int mParam = 10; 

public void func (int myParam){ 
//print wanted name 
} 

func(mParam); 

sortie Recherché:

mParam 

utilisant la réflexion, je réussi à obtenir:

myParam 
+0

Faites défiler vers le bas dans la question en double pour la solution Java 8. – rgettman

+2

@rgettman Je ne pense pas que l'OP veuille un nom de paramètre, je pense qu'il veut un nom * field * (qui passe en paramètre). Ce n'est pas tout à fait clair. Notez que la sortie spécifiée n'est * pas * un nom de paramètre dans leur exemple. –

+0

@PaulBoddington Oui, ce n'était pas clair. Mais parce que la sortie désirée est "mParam", pas "myParam", je vais un-dup. (Déjà non-dupé.) – rgettman

Répondre

0

Je pense qu'il est impossible en java. Puisque java utilise pass by value pour passer le paramètre. Donc, quand vous passez le paramètre à func(), il ne passe que la valeur de la variable rien d'autre.

Il est possible de connaître le paramètre défini par fonction à l'aide de package reflect.parameter dans java.If vous voulez connaître les paramètres détails de la fonction qui vous appelle pouvez consulter cette question Can I obtain method parameter name using Java reflection?

Mais vous ne peut pas connaître le nom du paramètre qui est passé.

-1

Vous pouvez modifier votre méthode func pour recevoir 2 params tels que:

public void func (int myParam, String myParamName){ 
//print wanted name 
} 

Ou mieux encore passer une carte en tant que paramètre:

public void func (Map<String, Integer> map){ 
//print wanted name 
} 

De cette façon, vous pouvez passer des entiers nommés et obtenir votre nombre entier par nom dans votre méthode