ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
16004
16004
EMPFEHLEN
-
Hallo,
ich möchte beim Aufruf einer Methode ihr als Parameter eine Methode übergeben, welche sie dann ausführt.
Ist das Möglich? Wenn ja wie?
Habs mit der Wrapperklasse java.lang.Void vergeblich versucht. Funktioniert leider nicht, da man keine Objekte der Klasse Void erzeugen kann. Eine andere Alternative fällt mir jetzt nicht ein.
VG Erdal
Beispiel:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public class Met { public void a () { c(b()); } public void b () { System.out.println("Test"); } public void c (Methode m) { "Führe m aus" } public static void main (String[] args) { a(); } }
-
14.10.05 09:03 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
(Per Reflection)
Oder per CommandPattern:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/** * */ package de.tutorials; import java.lang.reflect.Method; import java.lang.reflect.Modifier; /** * @author Tom * */ public class MethodInvocationExample { /** * @param args */ public static void main(String[] args) throws Exception { Foo foo = new Foo(); System.out.println(invokeMethod("methodA", new Class[0], new Object[0], foo.getClass(), foo)); System.out.println(invokeMethod("methodB", new Class[] { int.class, String.class }, new Object[] { Integer.valueOf(10), "Foo" }, foo.getClass(), foo)); System.out.println(invokeMethod("methodC", new Class[] { String.class }, new Object[] { "Bar" }, foo .getClass(), foo)); } private static Object invokeMethod(String methodName, Class[] signature, Object[] parameters, Class targetClass, Object target) throws Exception { Method m = targetClass.getDeclaredMethod(methodName, signature); if (Modifier.isPrivate(m.getModifiers())) { m.setAccessible(true); } return m.invoke(target, parameters); } static class Foo { private void methodA() { System.out.println("methodA"); } public void methodB(int i, String s) { System.out.println("methodB: " + i + " " + s); } public static int methodC(String s) { System.out.println("methodC " + s); return 42; } } }
http://www.google.de/search?hl=de&q=...a=lr%3Dlang_de
(Siehe auch die Klassen java.beans.Statement, java.util.concurrent.Callable ...)
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
14.10.05 09:05 #3
Tach.
Das geht wunderbar, wenn der Rückgabewert der Methode m passt.
Also wenn c einen integerwert erwartet, darf m auch nur nen int-wert
zurückgeben.Ich hab keine Ahnung.
Aber davon jede Menge.
-
hi,
tschuldigung, dass ich so einen alten Thread auspacke, aber ich habe eine ähnliche Problematik zu bewältigen...
ich wollte auch per Reflection eine Methode als Parameter übergeben, doch
aus dem schönen Beispiel von Thomas Darimont oder auch aus dieser Quelle:
http://de.wikibooks.org/wiki/Java_Standard:_Class
scheint hervorzugehen, dass
Class.getDeclaredMethod(methodName, signature) als signature nur ein seltsames Class<?>[] Object, das nur Primitives halten "verträgt".
Die Methoden, die ich aufrufen möchte, erwarten als Parameter aber Objekte - wie kann ich diese aufrufen?
gruß Inkarnat
-
Hallo,
du kannst in dem Class[] auch andere Class-Objecte mitgeben, nicht nur primitive.
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Mal ne Frage...
muss die Methode denn unbedingt generisch (soll mheißen: beleibig) sein?
Ich verwende für sowas normalerweise Interfaces.
Ähnliche Themen
-
Bean-Variablen als Parameter einer Methode einer anderen Bean
Von mcdroemmel im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 25.06.09, 17:53 -
Statische Klasse als Parameter an Methode übergeben
Von Renji im Forum JavaAntworten: 1Letzter Beitrag: 13.08.08, 19:37 -
Generics - Rückgabewert einer generischen Methode als Parameter einer Zweiten
Von DarthShader im Forum JavaAntworten: 3Letzter Beitrag: 06.07.08, 23:54 -
Vor Aufruf einer bestimmten Methode immer erst eine andere Methode aufrufen
Von lernen.2007 im Forum JavaAntworten: 2Letzter Beitrag: 06.06.07, 18:37 -
Variablenname als Parameter an Methode übergeben
Von muetze_online im Forum JavaAntworten: 10Letzter Beitrag: 11.04.06, 03:29





Zitieren


Login





