2014-04-20 4 views
3

Je dois traduire un String qui aura une valeur comme "com.foo.Foo" mais j'ai besoin d'obtenir la classe qui s'y trouve et d'appeler une méthode à l'intérieur.Obtenir la classe à partir de son nom complet

public static void command(String name, String scriptfolder) 

c'est la signature de la méthode

Merci

+0

quoi? Je ne comprends pas votre question. Vous devez obtenir la classe de la chaîne? –

+0

Une bonne question donnera toujours une bonne réponse. Vous devriez être clair sur ce que vous demandez! –

+0

{ClassName} .class.getSimpleName(); –

Répondre

7

Avez-vous essayé

Class.forName("com.foo.Foo"); 

Edit: Pour appeler la méthode statique, vous aurez besoin de faire quelque chose comme:

Class clazz = Class.forName("com.foo.Foo");  
Method method = clazz.getMethod("methodName", String.class); 
Object o = method.invoke(null, "whatever"); 

Cela dépend de votre méthode et de ses paramètres. Voir le tutoriel de réflexion pour plus de détails: http://docs.oracle.com/javase/tutorial/reflect/

+0

Je ne pensais pas que ce serait aussi simple. – Curlip

+0

Était-ce juste la classe que vous recherchiez? – JamesB

+0

Oui, il a une méthode statique Je dois appeler – Curlip

1

Si vous cherchez à traduire un nom de classe qui est, sauf dans la chaîne que vous devez être à la recherche

Class.forName("Your.Class.String"); 

Mais vous devez gérer l'exception

note: Juste pour vous rappeler de gérer la ClassNotFound Exception

+1

Merci, mais @JamesB vous parie à elle – Curlip

Questions connexes