Funktion als Parameter übergeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Funktion als Parameter übergeben

    Guten Tag,
    Ich habe momentan folgendes Problem.

    Ich möchte eine Klasse schreiben, die mit Funktionen anderer Klassen bestimmte Zeitmessungen durchführt.
    Dazu muss dieses Klasse "TimeCap" die Möglichkeit besitzen Funktionen anderer Klassen aufrufen zu können.

    Ist es also möglich, dass eine statische Methode als Parameter eine statische Methode einer anderen Klasse empfängt und diese ausführen kann?

    Mit freundlichen Grüßen
    g_phrase
  • Hi,

    in Java gibt es Funktionspointer oder klassische Funktionsobjekte wie zB in C++ nicht direkt,
    hier behilft man sich mit dem Einpacken des auszuführenden Codes in Instanzen von Typen, die Methoden mit einer passenden Signatur anbieten.
    Runnable ist zB dafür nutzbar wie mein Beispiel zeigt. Das mag auf den ersten Blick umständlich oder sperrig wirken, folgt aber einer klaren und übersichtlichen OO-Linie und genügt allen Anforderungen typsicher.

    Quellcode

    1. public class Profiler {
    2. public static long measure(final Runnable method) {
    3. long start = System.currentTimeMillis();
    4. method.run(); //where method must not perform async
    5. return System.currentTimeMillis() - start;
    6. }
    7. public static void main(final String... args) {
    8. final Runnable wrapper = new Runnable() {
    9. @Override
    10. public void run() {
    11. Business.work();
    12. }
    13. };
    14. System.out.println(measure(wrapper));
    15. }
    16. }
    17. class Business {
    18. static void work() {
    19. //ur stuff
    20. }
    21. }
    Alles anzeigen


    Alternativ könntest du auch etwas wie

    Quellcode

    1. public void measure(final Object obj, final String methodName)

    bauen und das per Reflection machen, wie es in der Regel UnitTestFrameworks machen.