2010-08-05 4 views
0

par exemple, j'ai une variable appelée (« méthode »), il est une chaîne, mais je voudrais faire quelque chose comme ça ....Puis-je faire appel à la méthode dynamiquement en Java?

obj.method(); //The object called the method(); 

Mais je voudrais changer le .Méthode à une méthode dynamique, ce qui signifie, je veux appeler la base de la méthode sur la variable. Par exemple, si je l'ai fait quelque chose comme ceci:

method = ".toString()"; 

est-il une méthode pour me aider à transmettre cette chaîne à l'objet, et l'objet appellerai la

obj.toString(); 

Si la méthode est

method = ".toChar()"; 

Je veux qu'elle a appelé le

obj.toChar(); 

Comment puis-je le faire? Je vous remercie.

+5

vous pouvez (voir les réponses), mais vous ne devriez pas, sur une base régulière. Java est typé statiquement et vous devriez utiliser les avantages de ceci. – Bozho

Répondre

0

La réflexion est le moyen. Voici un starting poin t pour vous.

Vous pouvez consulter un tutoriel here.

5

Vous utilisez l'API de réflexion pour cela. Dans votre cas, ce serait quelque chose comme ceci:

String method = "toString"; 
Class<Obj> objClass = obj.getClass(); 
Method m = objClass.getMethod(method); 
m.invoke(obj); 

Il est non testé, mais il devrait fonctionner. Sinon, lisez juste un peu dans la documentation.

Notez que c'est souvent (mais pas toujours) la mauvaise façon de faire les choses en Java.

+3

+1 "... souvent la mauvaise façon de faire les choses en Java" – helpermethod

+1

Content que vous soyez d'accord. D'après mon expérience, les débutants et les personnes venant de langues dynamiques ont tendance à utiliser la réflexion de manière inappropriée. – musiKk

Questions connexes