Fonction dynamique de Création en Java
Donc, je suis en train de voir si il y a une méthode pour créer dynamiquement/affecter une méthode à une classe en Java. Si c'était de la C, je voudrais juste faire comme suit à l'aide de pointeurs:
public class Foo {
void bar(void *ptr) {....}
};
int main() {
Foo f = new Foo();
f.bar({"my function" ...})
}
Cependant, Java, naturellement, n'a pas de pointeurs, est-il possible d'obtenir la même fonctionnalité d'une application Java?
Êtes-vous sûr que C?
Duplicata de - stackoverflow.com/questions/122407/...
Ce que l'... C n'a pas de classes, et c'est certainement pas C.
Duplicata de - stackoverflow.com/questions/122407/...
Ce que l'... C n'a pas de classes, et c'est certainement pas C.
OriginalL'auteur Briggs | 2011-03-15
Vous devez vous connecter pour publier un commentaire.
En Java, vous le feriez normalement déclarer une interface avec une méthode à appeler. Par exemple, si votre fonction ne souhaite exécuter un code, vous pouvez déclarer un Exécutable et de mettre en œuvre sa méthode run.
OriginalL'auteur Paŭlo Ebermann
Pour générer vraiment des méthodes dynamiques, vous avez besoin d'un bytecode-manipulation de la bibliothèque, comme Javassist ou cglib.
OriginalL'auteur Jim Garrison
En java, il est atteint par quelque chose qui s'appelle anonyme des classes, voici un exemple -
OriginalL'auteur d-live
Vous pouvez utiliser le Java API pour la programmation, la création de la fonction en tant que Script et de l'appeler. Mais faire cela seulement si vos fonctions sont vraiment complètement defineable au moment de l'exécution, parce que l'interprétation des scripts est toujours plus lente que la mise en œuvre en Java en natif.
OriginalL'auteur Daniel
Si vous voulez vraiment changer de classe au moment de l'exécution, le seul moyen est de modifier le bytecode, en supposant que votre configuration le permet (la Java de sécurité normalement coup de pied dans). Cela dit, il y a un
java.lang.instrument
package en Java 6 qui peut aider:http://download.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html
Vous pourriez trouver la cglib projet d'utilisation:
http://sourceforge.net/projects/cglib/
OriginalL'auteur Ben
Voir http://functionaljava.org/ pour un ensemble fonctionnel de la bibliothèque Java.
OriginalL'auteur user unknown
Voici un lien à la façon dont vous pouvez utiliser le construit en version d'exécution de javac pour compiler les classes que vous définissez sur la mouche.
OriginalL'auteur Amir Afghani