2017-06-26 3 views
0

hat gerade begonnen, Android/Java zu lernen, und ich bemerkte viele Erscheinungen von '@' im Code. @Override Ich kann mit Google finden, aber der Rest ist ein Geheimnis. Eg während butter Bibliothek erklären wir Variablen wie folgt aus:Was bedeutet '@' in Java/Android

@BindView(R.id.note1) TextView importantNote; 

Does ‚@‘ haben eine spezielle Funktionalität, oder ist es nur ein fester Bestandteil der Methode BindViews() Name? Da ich nichts Genaues über '@' herausfinden konnte, kam ich auf eine Idee, dass es eine Art Konvention sein könnte. Habe ich recht? Wenn ja, wie lautet die Konvention?

+4

https://docs.oracle.com/javase/tutorial/java/annotations/ – Reimeus

+0

Hier ist eine andere gute Ressource - http://tutorials.jenkov.com/java/annotations.html – Dayan

+0

Haben Sie sogar versucht, die zu lesen Offizielles Java-Tutorial? –

Antwort

2

@ deklariert eine Anmerkung. Beim Kompilieren des Codes durchsucht ein Annotation Processor den Code nach diesen Annotationen und kann nach Bedarf Code generieren (z. B. generiert die BindView-Annotation den findViewById-Code, der zum Binden einer Sicht an eine Variable benötigt wird) oder als zusätzliche Compileranweisung (z. B. , Override stellt sicher, dass die Variable tatsächlich überschrieben wird, sonst erhalten Sie einen Compilerfehler.

Für mehr auf, wie Sie Ihre eigenen Anmerkungen (und wie Annotation Prozessoren arbeiten) lesen Sie hier erstellen: https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html

+0

so seine Art wie eine Abkürzung für einen Compiler. Compiler sieht es und generiert einen Code für uns? – Leo

+0

@Leo im Grunde, ja – Aenadon

2

prüfen https://docs.oracle.com/javase/tutorial/java/annotations/

Diese sind „Anmerkungen“ aus.

Zum Beispiel:

@Override 
protected void overridenMethod() { 
} 

Anmerkungen Argumente haben kann, wie folgt aus:

@SuppressWarnings("unused") 

Das Beispiel @BindView ist ein Inline-Annotation. Inline-Annotationen sind sehr ungewöhnlich, andere Beispiele für Inline-Annotationen sind sehr spezifische @SuppressLint Annotationen.

Sie können jedoch eigene Anmerkungen machen, wenn Sie Anmerkungen für Compiler-Warnungen, Fehler usw. machen. In diesem Fall muss die IDE die Anmerkung erkennen. Beispielsweise funktioniert SuppressLint nur, wenn die IDE die Annotation unterstützt, andernfalls hat die Annotation keine Auswirkungen.