2009-08-28 5 views

Répondre

5

Non, c'est juste un nom différent pour la même chose.

+0

yup .. les deux représentent la même chose – Ajay

0

Je ne suis pas sûr de ce que vous voulez vraiment entendre, mais ..

En Java, vous pouvez appeler la fonction en utilisant la réflexion. Vous devez faire quelque chose comme ceci:

MyClass mc = new MyClass(); 

mc.getClass().getDeclaredMethods() [0].invoke(); 

Vous pouvez lire ce article about reflection.

+0

Alors? Vous pouvez également "appeler" une fonction en utilisant la réflexion. C'est la même chose. –

1

La différence entre appel et invocation n'est pas définie. Pour moi (!):

appel signifie que j'appelle explicitement la fonction dans mon code

Exemple Java

object.method(arg1, arg2); 

Erlang exemple

fun(Arg1, Arg2). 

Invoquer signifie que j'ai une sorte de référence à une fonction (nom, pointeur, etc.), et demander à un mécanisme d'appeler cette fonction pour moi (passer la référence que j'ai)

Jave exemple

method m = Class.forName("myClass").getMethod("method", new Class[] {Integer.TYPE, Integer.TYPE}); 
m.invoke(new Object[] {10, 20}); 

Erlang exemple

erlang:apply(mymodule, fun, [Arg1, Arg2]). 
0

Il n'y a pas de fonctions en Java, seules les méthodes qui sont soit attachés à une classe (méthodes statiques) ou des instances de classe.

Dans les anciens langages non-OO, les personnes utilisaient le terme "appel". Quand OO est devenu tout le battage médiatique, de nouveaux noms ont été inventés et les gens ont dit "nous appelons une fonction" mais "nous invoquons une méthode".

+1

En fait, ils ont dit "envoyer un message". –

+0

Je n'ai jamais vu ça ailleurs qu'en Objective C. Quand j'ai appris le C++, c'était "invoke method". –

+1

Il a été utilisé dans Smalltalk * au moins * depuis 1972. Il est également utilisé dans Self, Newspeak, Io, Ioke, Ruby, Objective-C++, plusieurs systèmes Lisp OO, plusieurs systèmes Schéma OO. –

Questions connexes