Article View: es.comp.lenguajes.java
Article #26404Re: Problemas con las llamadas
From: jmoya
Date: Mon, 04 Jan 1999 00:00
Date: Mon, 04 Jan 1999 00:00
68 lines
2635 bytes
2635 bytes
diego wrote:
> Hola a todos:
>
> �Sabr�a alguien c�mo se puede llamar a una funci�n que est� almacenada en
> una variable String?
>
> Me explico:
>
> String orden="Tipo1 funcion=new Tipo1(param1,param2);";
>
> y ahora poder llamar a ejecutar a la variable orden, algo as� como una
> indirecci�n.
>
> Saludos.
Hola Diego,
busca un tutorial o libro sobre la API reflection.
Aqui tienes un ejemplo de invocacion de un metodo dadas unas cadenas usando
esta API.
Este programa te permite ver como invocar un metodo dinamicamente.
El program obtiene el objeto Metodo para el metodo String.concat y
seguidamente lo invoca para concatenar dos objetos String.
import java.lang.reflect.*;
class SampleInvoke {
public static void main(String[] args) {
String firstWord = "Hola ";
String secondWord = "caracola.";
String bothWords = append(firstWord, secondWord);
System.out.println(bothWords);
}
public static String append(String firstWord, String secondWord)
{
String result = null;
Class c = String.class;
Class[] parameterTypes = new Class[] {String.class};
Method concatMethod;
Object[] arguments = new Object[] {secondWord};
try {
concatMethod = c.getMethod("concat", parameterTypes);
result = (String) concatMethod.invoke(firstWord,
arguments);
} catch (NoSuchMethodException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (InvocationTargetException e) {
System.out.println(e);
}
return result;
}
}
La salida del programa seria:
Hola caracola.
*******************************
Saludos,
Juan Moya
Technical Details
Message-ID:
<369116B4.1C950BE8@mat.upc.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<768egq$k9a$1@talia.mad.ibernet.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,efb819ff07a199be X-Google-Attributes: gid1116f3,public From: jmoya <jmoya@mat.upc.es> Subject: Re: Problemas con las llamadas Date: 1999/01/04 Message-ID: <369116B4.1C950BE8@mat.upc.es> X-Deja-AN: 428726440 Content-Transfer-Encoding: 8bit References: <768egq$k9a$1@talia.mad.ibernet.es> To: diego <diemarpe@inf.upv.es> X-Accept-Language: en Content-Type: text/plain; charset=iso-8859-1 Organization: Universitat Politecnica de Catalunya Mime-Version: 1.0 Newsgroups: es.comp.lenguajes.java