Wie bekomme ich den Binärnamen einer Java-Klasse, wenn man nur den vollqualifizierten Namen hat?

Die Reflection-Klassen und -Methoden sowie die Klassenladeprogramme usw. benötigen die sogenannten "binären" Namen der Klassen, mit denen gearbeitet werden soll.

Die Frage ist, wie man den Binärnamen erhält, wenn man nur den vollständig qualifizierten Namen hat, d. H. Den Namen, den man im Quellcode verwenden würde.

Zum Beispiel:

package frege;
public static class RT {
    ....
    public static class X { .... }
}

Der vollständig qualifizierte Name der Klasse wärefrege.RT.X. Um das Klassenobjekt zu erhalten, muss man jedoch schreiben:

Class.forName("frege.RT$X")

und nicht

Class.forName("frege.RT.X")    // fails with ClassNotFoundException

daX zufällig eine innere Klasse vonfrege.RT.

Eine mögliche, aber ungeschickte Lösung wäre, sie zu ersetzen. mit$ von rückwärts eins nach dem anderen bisClass.forName() wirft nichtClassNotFoundException mehr oder es gibt keine mehr. ersetzen.

Gibt es eine bessere / bekannte / Standardlösung? Ich habe in den API-Dokumenten nach gesuchtClass, CLassLoader undjava.lang.reflect fand aber nichts brauchbares.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage