Comment obtenir une classe depuis Element en Java

** Pendant le traitement des annotations, la classe cible n'est pas chargée dans le ClassLoader côté processeur, vous ne pouvez donc pas obtenir la classe de cette façon **

~~ Obtenir la classe à partir de # élément ~~

~~ - Type Element If (Element of class), Classe de cet élément ~~ ~~ - Élément variable (variables telles que les constantes de champs / énumération) Classe du type de variable ~~

Obtenez ~~. Il existe environ 3 autres types d'éléments, mais je ne les ai pas écrits car ils n'ont pas été vérifiés et il ne semble pas nécessaire d'en obtenir la classe . ~~

~~ Je me fiche du mécanisme, déplacez-le simplement pour le moment! Si vous êtes une personne, veuillez utiliser ce code. Veuillez le copier et le coller dans un endroit approprié. ~~

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

Puisqu'il s'agit d'une fonction d'extension de ~~ Element, getDeclaredClass () est appelé et utilisé tel quel à partir de l'élément récupéré autour de roundEnv.getElementsAnnotatedWith (). ~~

~~ ## Processus pour obtenir une classe à partir de l'élément ~~

~~ 1. Appelez ʻElement # asType () pour obtenir le TypeMirror de type. 2. Convertissez la valeur obtenue en DeclaredType. 3. Appelez DeclaredType # asElement ()` pour obtenir l'élément de type. 4. Convertissez la valeur obtenue en TypeElement 5. Obtenez le nom binaire (nom complet) de la classe à partir de TypeElement 6. Obtenir la classe depuis ClassLoader en utilisant le nom binaire ~~

~~ Après tout, vous ne pouvez pas convertir Element directement en classe. Vous obtiendrez la classe via le chargeur de classe. ~~

~~ ʻA propos de l'élément # asType`. JavaDoc est ~~

~~> Renvoie le type défini par cet élément. ~~

Il dit ~~. Il renvoie le type de la variable pour un élément variable et le type représenté par l'élément lui-même pour un élément de type. À propos, l'élément acquis en 3 est le même que le premier élément, donc dans le cas de l'élément de type, sauter 1 à 4 et 5 et 6 suffira. Comment 1 ~ 4 obtenir un élément de type de type à partir d'un élément variable Comment 5 ~ 6 obtenir la classe de l'élément de type Ce sera. ~~

Essayez de coder

~~ Voici le code que j'ai écrit ~~

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

~~ Serait-ce comme ça s'il était écrit en Java? ~~

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

Recommended Posts

Comment obtenir une classe depuis Element en Java
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment obtenir la date avec Java
Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
Comment utiliser la classe Java
Comment utiliser HttpClient de Java (Get)
Comment désassembler un fichier de classe Java
Comment apprendre JAVA en 7 jours
Comment obtenir des paramètres dans Spark
Comment décompiler un fichier de classe Java
Comment utiliser les méthodes de classe [Java]
Comment utiliser les classes en Java?
Comment nommer des variables en Java
[Java] Comment utiliser la classe Math
Comment concaténer des chaînes avec Java
Comment stocker des chaînes de ArrayList à String en Java (personnel)
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
[Java] Comment utiliser la classe File
[Kotlin] Trois façons d'obtenir un cours depuis KClass
Comment faire une conversion de base en Java
[Java] Comment obtenir le répertoire actuel
Comment appliquer les conventions de codage en Java
Comment intégrer Janus Graph dans Java
[Traitement × Java] Comment utiliser la classe
Java: Comment envoyer des valeurs du servlet au servlet
Comment utiliser la classe Java Scanner (Remarque)
Obtenir l'historique du serveur Zabbix en Java
[Java] Comment utiliser la classe Calendar
Comment obtenir et ajouter des données depuis Firebase Firestore dans Ruby
[Java] Comment convertir du type String en type Path et obtenir le chemin
Comment obtenir la longueur d'un fichier audio avec Java
GetInstance () à partir d'une classe @Singleton dans Groovy à partir de Java
[Java] Comment utiliser la classe FileReader et la classe BufferedReader
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Comment obtenir un heapdump à partir d'un conteneur Docker
Comment afficher une page Web en Java
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
Comment convertir un contrat de solidité en une classe de contrat Java
Obtenez unixtime (secondes) de ZonedDateTime dans Scala / Java
Comment masquer les champs nuls en réponse en Java
Comment ajouter conditionnellement une classe html.erb dans Rails
Bibliothèque "OSHI" pour acquérir des informations système avec Java
De Java à Ruby !!
[Java] Comment obtenir des nombres aléatoires en excluant des nombres spécifiques
[Java] Comment passer de jdk ouvert à jdk oracle
Comment obtenir et étudier Java SE8 Gold
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Comment obtenir l'optimisation SIMD pour HotSpot JavaVM
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java