Heim > Java > javaLernprogramm > Hauptteil

Element Verwenden Sie Markierungsschnittstellen, um Typen zu definieren

PHPz
Freigeben: 2024-07-17 09:02:20
Original
906 Leute haben es durchsucht

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
}
Nach dem Login kopieren

Ü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
Nach dem Login kopieren

Markierungsgenauigkeit:

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

Beispiel:

public interface MyMarkerInterface extends MySpecificInterface {
    // Sem métodos adicionais
}
Nach dem Login kopieren

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.
}

Nach dem Login kopieren

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
}

Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}

Nach dem Login kopieren

Lesezeichen-Hinweis:

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

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

Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage