Heim  >  Artikel  >  Java  >  Element Verwenden Sie Markierungsschnittstellen, um Typen zu definieren

Element Verwenden Sie Markierungsschnittstellen, um Typen zu definieren

PHPz
PHPzOriginal
2024-07-17 09:02:20885Durchsuche

Definition und Zweck

Marker-Schnittstelle:

  • Enthält keine Methodendeklarationen.
  • Markiert eine Klasse als eine Klasse mit einer bestimmten Eigenschaft.
  • Beispiel: Serialisierbar gibt an, dass eine Klasse serialisiert werden kann.
  • Vorteile von Marker-Schnittstellen

Typdefinition:

  • Markerschnittstellen definieren einen Typ, der von Instanzen einer Klasse implementiert wird.
  • Ermöglicht die Fehlererkennung zur Kompilierungszeit.

Beispiel:

public class MyClass implements Serializable {
    // Implementação
}

Überprüfung der Kompilierungszeit:

  • Durch die Verwendung von Marker-Schnittstellen können Fehler beim Kompilieren erkannt werden.

Beispiel mit Serialisierbar:

ObjectOutputStream.writeObject(myObject); // Garante que myObject seja Serializable

Markierungsgenauigkeit:

  • Markerschnittstellen können präzise auf bestimmte Subtypen angewendet werden.

Beispiel:

public interface MyMarkerInterface extends MySpecificInterface {
    // Sem métodos adicionais
}

Nutzungsbeispiele

Serialisierbar:

  • Zeigt an, dass eine Klasse serialisiert werden kann.

Beispiel:

public class Person implements Serializable {
    private String name;
    private int age;
    // Getters, setters, etc.
}

Schnittstelle als eingeschränkte Markierung festlegen:

  • Gilt nur für Untertypen von Collection, fügt jedoch keine anderen Methoden als die von Collection definierten hinzu.
  • Verfeinert Methodenverträge wie add, equal und hashCode.
  • Vergleich mit Bullet Notes

Markierungsnotizen:

  • Kann auf weitere Programmelemente (Klassen, Schnittstellen, Methoden usw.) angewendet werden.

Beispiel:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyMarkerAnnotation {
}

@MyMarkerAnnotation
public class MyClass {
    // Implementação
}

Wann sollte die Marker-Schnittstelle verwendet werden? Markierungsanmerkung:

  • Markierungsschnittstelle verwenden, wenn:
  • Das Markup muss einen Typ definieren.
  • Vielleicht möchten Sie Methoden schreiben, die nur Objekte mit diesem Markup akzeptieren.

Markierungsanmerkung verwenden, wenn:

  • Das Tag gilt für andere Elemente als Klassen oder Schnittstellen.
  • Es ist Teil eines Frameworks, das häufig Anmerkungen verwendet.

Vorteile von Bullet Notes

  • Konsistenz in Frameworks:
  • Erleichtert die Konsistenz in annotationsbasierten Frameworks.

Beispiel:

@MyFrameworkAnnotation
public class MyClass {
    // Implementação
}

Nutzungsentscheidung
So definieren Sie einen Typ:

  • Verwenden Sie eine Markierungsschnittstelle.
  • Um Elemente zu markieren, die keine Klassen oder Schnittstellen sind:
  • Verwenden Sie eine Aufzählungsliste.

Teil eines annotationsbasierten Frameworks:
Verwenden Sie eine Aufzählungsliste.

Letztes Beispiel

  • Marker-Schnittstelle:
public interface MyTypeMarker {
}

public class MyClass implements MyTypeMarker {
    // Implementação
}

public void process(MyTypeMarker obj) {
    // Processa apenas objetos marcados com MyTypeMarker
}

Lesezeichen-Hinweis:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotationMarker {
}

@MyAnnotationMarker
public class MyClass {
    // Implementação
}

Zusammenfassung

  • Markerschnittstellen werden verwendet, um Typen ohne zusätzliche Methoden zu definieren.
  • Markierungsanmerkungen werden verwendet, um Programmelemente allgemein zu kennzeichnen.
  • Die Wahl hängt vom Kontext und Ziel der Markierung ab.

Ergänzung
Marker-Schnittstellen:
Image description

Das obige ist der detaillierte Inhalt vonElement Verwenden Sie Markierungsschnittstellen, um Typen zu definieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:SammlungenNächster Artikel:Sammlungen