2016-06-30 36 views
1

Ich habe ein Projekt gegeben, das ich & verstehen muss. Es gibt eine Klasse, die die Folgendes: -Android Annotation nicht richtig verstanden

public abstract class AbstractPayment extends GodelCheckout { 
    public static final String AUTH_USING_GET = "GET"; 
    public static final String AUTH_USING_POST = "POST"; 

    @Retention(RetentionPolicy.SOURCE) 
    @StringDef({AUTH_USING_GET, AUTH_USING_POST}) 
    public @interface AuthMethod {} 

Ich versuchte Anmerkung Verständnis & warum sie wichtig aus dem Google-Entwickler-Website, aber ich konnte nicht viel abgesehen von der Tatsache verstehen, dass sie zur Verbesserung des Code verwendet werden.

  1. Aber wie verbessern sie den Code? Irgendein Beispiel?

  2. Warum wird @Retention(RetentionPolicy.SOURCE) hier benötigt?

  3. Was macht @StringDef() eigentlich?

  4. was ist public @interface AuthMthod{}?

  5. Bitte erläutern Sie, was Retention.SOURCE, .CLASS & .RUNTIME wirklich sind? Ich habe versucht, sie von der Google-Website für Entwickler zu verstehen, aber es hat nicht viel geholfen.

+1

5. https://docs.oracle.com/javase/7/docs/api/java/lang/annotation/RetentionPolicy.html –

+1

4. Es ist ein [Anmerkungstyp] (https://docs.oracle. com/javase/tutorial/java/Anmerkungen/declaring.html). –

+1

1. Einige Anwendungsbeispiele sind hier: https://docs.oracle.com/javase/tutorial/java/annotations/index.html –

Antwort

2
  1. ein Funktionsargument oder Folge davon Durch Markieren können Sie ein erwartetes Verhalten definieren. Wenn zum Beispiel ein Funktionsargument mit dieser Anmerkung markiert wird, kann kein anderes Argument als AUTH_USING_GET oder AUTH_USING_POST übergeben werden.
  2. Bei der Quellenaufbewahrung wird der Code nicht kompiliert, wenn Annotationsfehler auftreten. Nach erfolgreicher Kompilierung werden sie aus dem Code entfernt. Mit der Aufbewahrungsrichtlinie RUNTIME wird der Code während des Betriebs überprüft.
  3. @StringDef können Sie nur String IDs übergeben, zum Beispiel R.string.login. @IntDef können Sie nur R.id.sample_int an die Funktion übergeben
  4. Dies ist die Annotation, die gewünschte Parameter oder Funktionsergebnisse oder Klassenfelder müssen annotiert werden, um das gewünschte Ergebnis zu erhalten.
  5. Schauen Sie sich die zweite Frage an.

Weitere Fragen finden Sie in der Java-Dokumentation.

Verwandte Themen