So erhalten Sie eine Klasse von Element in Java

** Während der Anmerkungsverarbeitung wird die Zielklasse nicht in den ClassLoader auf der Prozessorseite geladen, sodass Sie die Klasse nicht auf diese Weise erhalten können **

~~ Klasse von # Element holen ~~

~~ - Typelement (Element der Klasse), Klasse dieses Elements ~~ ~~ - Variablenelement (Variablen wie Felder / Enum-Konstanten) Klasse vom Variablentyp ~~

Holen Sie sich ~~. Es gibt ungefähr 3 andere Arten von Elementen, aber ich habe sie nicht geschrieben, weil sie nicht verifiziert wurden und es nicht notwendig zu sein scheint, Klasse von ihnen zu erhalten. ~~

~~ Der Mechanismus ist mir egal, bewege ihn vorerst einfach! Wenn Sie eine Person sind, verwenden Sie bitte diesen Code. Bitte kopieren Sie es und fügen Sie es an einer geeigneten Stelle ein. ~~

fun Element.getDeclaredClass(): Class<*> = ((asType() as DeclaredType).asElement() as TypeElement).qualifiedName.let { name -> ClassLoader.getSystemClassLoader().loadClass(name.toString())}

Da es sich um eine Erweiterungsfunktion von ~~ Element handelt, wird getDeclaredClass () so aufgerufen und verwendet, wie es von dem Element stammt, das von "roundEnv.getElementsAnnotatedWith ()" abgerufen wurde. ~~

~~ ## Prozess zum Abrufen der Klasse vom Element ~~

~~ 1. Rufen Sie Element # asType () auf, um den TypeMirror vom Typ abzurufen. 2. Wandeln Sie den erhaltenen Wert in DeclaredType um. 3. Rufen Sie "DeclaredType # asElement ()" auf, um das Element vom Typ abzurufen. 4. Wandeln Sie den erhaltenen Wert in TypeElement 5. Rufen Sie den Binärnamen (vollständig qualifizierter Name) der Klasse von TypeElement ab 6. Holen Sie sich Class von ClassLoader mit dem Binärnamen ~~

~~ Schließlich können Sie Element nicht direkt in Klasse konvertieren. Sie erhalten die Klasse über den Class Loader. ~~

~~ Über Element # asType. JavaDoc ist ~~

~~> Gibt den von diesem Element definierten Typ zurück. ~~

Es heißt ~~. Dies gibt den Typ der Variablen für ein Variablenelement und den Typ zurück, der vom Element selbst für ein Typelement dargestellt wird. Übrigens ist das in 3 erworbene Element dasselbe wie das erste Element. Im Fall von Typ Element reicht es also aus, 1 bis 4 und 5 und 6 zu überspringen. Wie 1 ~ 4 Typelement vom Typ vom variablen Element erhalten Wie 5 ~ 6 Klasse vom Typ Element erhalten Es wird sein. ~~

Versuchen Sie zu codieren

~~ Hier ist der Code, den ich tatsächlich geschrieben habe ~~

fun Element.getDeclaredClass(): Class<*> {
    return ((asType() as DeclaredType).asElement() as TypeElement).qualifiedName.let { name ->
        ClassLoader.getSystemClassLoader().loadClass(name.toString())
    }
}

~~ Wäre es so, wenn es in Java geschrieben wäre? ~~

public Class<?> getDEclaredClass(Element element) {
    String name = ((TypeElement)((DeclaredType)element.asType()).asElement()).getQualifiedName().toString()
    return ClassLoader.getSystemClassLoader().loadClass(name)
}

Recommended Posts

So erhalten Sie eine Klasse von Element in Java
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
So erhalten Sie das Datum mit Java
So erhalten Sie Keycloak-Anmeldeinformationen in der Interceptor-Klasse
Verwendung der Java-Klasse
Verwendung von HttpClient (Get) von Java
So zerlegen Sie eine Java-Klassendatei
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark
So dekompilieren Sie eine Java-Klassendatei
Verwendung von Klassenmethoden [Java]
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
[Java] Verwendung der Math-Klasse
So verketten Sie Zeichenfolgen mit Java
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
[Java] Verwendung der File-Klasse
[Kotlin] Drei Möglichkeiten, um Klasse von KClass zu bekommen
So führen Sie eine Basiskonvertierung in Java durch
[Java] So erhalten Sie das aktuelle Verzeichnis
So erzwingen Sie Codierungskonventionen in Java
Einbetten von Janus Graph in Java
[Verarbeitung × Java] Verwendung der Klasse
Java: So senden Sie Werte von Servlet zu Servlet
Verwendung der Java Scanner-Klasse (Hinweis)
Abrufen des Verlaufs vom Zabbix-Server in Java
[Java] Verwendung der Calendar-Klasse
Abrufen und Hinzufügen von Daten aus dem Firebase Firestore in Ruby
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So ermitteln Sie die Länge einer Audiodatei mit Java
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
So erhalten Sie einen Heapdump aus einem Docker-Container
So zeigen Sie eine Webseite in Java an
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
Holen Sie sich Unixtime (Sekunden) von ZonedDateTime in Scala / Java
So verbergen Sie Nullfelder als Antwort in Java
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
Bibliothek "OSHI" zum Erfassen von Systeminformationen mit Java
Von Java zu Ruby !!
[Java] So erhalten Sie Zufallszahlen ohne bestimmte Zahlen
[Java] So wechseln Sie von Open JDK zu Oracle JDK
Wie man Java SE8 Gold bekommt und studiert
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
So erhalten Sie eine SIMD-Optimierung für HotSpot JavaVM
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses