Comportement lorsque les noms d'annotation Java sont portés

J'ai commencé à écrire Java et à utiliser des annotations.

Soudain, je me suis demandé ce qui se passerait si le nom de l'annotation que j'ai faite chevauchait avec une autre bibliothèque? à propos de ça.

Dans le cas d'une classe, vous pouvez utiliser le même nom pour la classe en l'indiquant explicitement avec un nom de package, mais je ne pouvais pas imaginer que le nom du package serait attaché à l'annotation, j'ai donc fait une simple annotation. ..

Tant que vous séparez les noms des packages, vous pouvez créer une classe avec le même nom, vous devriez donc pouvoir la créer, j'ai donc créé des annotations A pour chacun des packages a et b.

package a;

public @interface A {
}
package b;

public @interface A {
}

C'est très simple car il n'y a pas de traitement.

Utilisons-le! À la suite du codage en le laissant à intelliJ, il est devenu comme ci-dessous

import a.A;

public class Main {
    @A //Ceci est une annotation A déclarée par importation
    // @a.A //C'est la même chose que ↑! J'ai commenté parce que je me fâche, mais bien sûr, cette façon d'écrire est OK
    @b.A
    public static void main(String[] args){
    }
}

Le nom du package est entré tel quel.

Résumé

C'est peut-être une histoire célèbre pour les ingénieurs Java, mais même si vous portez un nom d'annotation, vous pouvez l'utiliser correctement comme une classe. Et cela semble difficile tant que vous ne vous y êtes pas habitué, car cela vous semble un peu inconfortable si le nom du package est attaché à l'annotation. J'ai été soulagé pour le moment qu'il n'y avait pas de problème même si les noms des annotations se chevauchaient entre les bibliothèques.

Recommended Posts

Comportement lorsque les noms d'annotation Java sont portés
[Java] Annotation
[Java] Annotation
Comportement lorsque les getters générés par lombok sont dupliqués
Lorsqu'il y a des variables d'environnement dans les tests Java
Comportement lors de l'appel des méthodes d'argument de longueur variable Java à partir de Scala / Kotlin / Java
[Java] Conseils de tri lorsque les chaînes et les nombres sont mélangés
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Histoire des annotations Java
À propos du comportement lors de la création d'un mappage de fichiers avec Java