Angenommen, Sie rufen eine statische Methode von einer statischen Methode innerhalb derselben Klasse auf. Dazu können Sie den folgenden Code verwenden.
class MainClass
{
public static int foo()
{
return 123;
}
public static void main(String[] args)
{
Method method = MainClass.class.getMethod("foo");
int result = (int) method.invoke(null); // answer evaluates to 123
}
}
Zur Erklärung: Da wir hier keine echte objektorientierte Programmierung durchführen und somit die Erstellung unnötiger Objekte vermeiden wollen, werden wir stattdessen die class
Eigenschaft zum Aufrufen von getMethod()
.
Dann werden wir in null
für die invoke()
Methode, weil wir kein Objekt haben, mit dem wir diesen Vorgang durchführen können.
Und schließlich, weil wir, die Programmierer, wissen, dass wir eine Ganzzahl erwarten, dann wir explizit den Rückgabewert der invoke()
Aufruf in eine Ganzzahl umzuwandeln.
Jetzt werden Sie sich vielleicht fragen: "Was ist überhaupt der Sinn dieser ganzen nicht objektorientierten Programmierung in Java?"
Mein Anwendungsfall war die Lösung von Projekt-Euler-Problemen in Java. Ich habe eine einzige Java-Quelldatei, die alle Lösungen enthält, und ich wollte Befehlszeilenargumente übergeben, um zu bestimmen, welches Project Euler-Problem ausgeführt werden soll.