Définition et objectif
Interface des marqueurs :
- Ne contient pas de déclarations de méthode.
- Marque une classe comme ayant une propriété spécifique.
- Exemple : Sérialisable indique qu'une classe peut être sérialisée.
- Avantages des interfaces de marqueurs
Définition du type :
- Les interfaces de marqueur définissent un type que les instances d'une classe implémentent.
- Permet la détection des erreurs au moment de la compilation.
Exemple :
public class MyClass implements Serializable {
// Implementação
}
Copier après la connexion
Vérification du temps de compilation :
- L'utilisation d'interfaces de marqueurs permet de détecter les erreurs lors de la compilation.
Exemple avec Serialisable :
ObjectOutputStream.writeObject(myObject); // Garante que myObject seja Serializable
Copier après la connexion
Précision du marquage :
- Les interfaces de marqueurs peuvent être appliquées avec précision à des sous-types spécifiques.
Exemple :
public interface MyMarkerInterface extends MySpecificInterface {
// Sem métodos adicionais
}
Copier après la connexion
Exemples d'utilisation
Sérialisable :
- Indique qu'une classe peut être sérialisée.
Exemple :
public class Person implements Serializable {
private String name;
private int age;
// Getters, setters, etc.
}
Copier après la connexion
Définir l'interface comme marqueur restreint :
- S'applique uniquement aux sous-types de Collection, mais n'ajoute pas de méthodes autres que celles définies par Collection.
- Affine les contrats de méthode tels que add, equals et hashCode.
- Comparaison avec Bullet Notes
Notes sur les marqueurs :
- Peut être appliqué à plus d'éléments du programme (classes, interfaces, méthodes, etc.).
Exemple :
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyMarkerAnnotation {
}
@MyMarkerAnnotation
public class MyClass {
// Implementação
}
Copier après la connexion
Quand utiliser Marker Interface vs. Annotation du marqueur :
- Utilisez l'interface du marqueur si :
- Le balisage doit définir un type.
- Vous souhaiterez peut-être écrire des méthodes qui n'acceptent que les objets avec ce balisage.
Utiliser l'annotation du marqueur si :
- La balise s'applique aux éléments autres que les classes ou les interfaces.
- Il fait partie d'un framework qui utilise beaucoup d'annotations.
Avantages des Bullet Notes
- Cohérence dans les cadres :
- Facilite la cohérence dans les frameworks basés sur des annotations.
Exemple :
@MyFrameworkAnnotation
public class MyClass {
// Implementação
}
Copier après la connexion
Décision d'utilisation
Pour définir un type :
- Utilisez une interface de marqueur.
- Pour marquer des éléments qui ne sont pas des classes ou des interfaces :
- Utilisez une puce.
Partie d'un framework basé sur des annotations :
Utilisez une puce.
Exemple final
- Interface des marqueurs :
public interface MyTypeMarker {
}
public class MyClass implements MyTypeMarker {
// Implementação
}
public void process(MyTypeMarker obj) {
// Processa apenas objetos marcados com MyTypeMarker
}
Copier après la connexion
Remarque sur le signet :
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotationMarker {
}
@MyAnnotationMarker
public class MyClass {
// Implementação
}
Copier après la connexion
Résumé
- Les interfaces de marqueurs sont utilisées pour définir des types sans méthodes supplémentaires.
- Les annotations de marqueurs sont utilisées pour marquer largement les éléments du programme.
- Le choix dépend du contexte et de l'objectif du marquage.
Complément
Interfaces des marqueurs :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!