U ovom uputstvu naučit ćemo što su napomene, različite Java napomene i kako ih koristiti uz pomoć primjera.
Java napomene su metapodaci (podaci o podacima) za izvorni kod našeg programa.
Sastavljaču pružaju dodatne informacije o programu, ali nisu dio samog programa. Te bilješke ne utječu na izvršenje kompajliranog programa.
Bilješke počinju sa @
. Njegova sintaksa je:
@AnotacijaName
Uzmimo primjer @Override
bilješke.
U @Override
zapažanje navodi se da je metoda koja je označena s ovim komentarima premošćuje metodu superclass s istim imenom metoda, vrsta povratka i popis parametara.
Nije obvezno koristiti @Override
prilikom nadjačavanja metode. Međutim, ako ga koristimo, kompajler daje pogrešku ako nešto nije u redu (kao što je pogrešan tip parametra) dok nadjačava metodu.
Primjer 1: Primjer bilješke @ Override
class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) )
Izlaz
Ja sam pas.
U ovom primjeru metoda displayInfo()
je prisutna i u superklasi Životinja i u podrazredu Pas. Kada se pozove ova metoda, umjesto metode u superrazredi poziva se metoda podrazreda.
Formati bilješki
Bilješke također mogu sadržavati elemente (članove / atribute / parametre).
1. Bilješke markera
Oznake oznaka ne sadrže članove / elemente. Koristi se samo za označavanje deklaracije.
Njegova sintaksa je:
@AnnotationName ()
Budući da ove bilješke ne sadrže elemente, zagrade se mogu izuzeti. Na primjer,
@Preuzmi
2. Bilješke s jednim elementom
Bilješka jednog elementa sadrži samo jedan element.
Njegova sintaksa je:
@AnnotationName (elementName = "elementValue")
Ako postoji samo jedan element, uobičajeno je imenovati taj element vrijednošću.
@AnnotationName (value = "elementValue")
U tom slučaju može se izuzeti i ime elementa. Naziv elementa bit će zadana vrijednost.
@AnnotationName ("elementValue")
3. Bilješke s više elemenata
Te bilješke sadrže više elemenata odvojenih zarezima.
Njegova sintaksa je:
@AnnotationName (element1 = "vrijednost1", element2 = "vrijednost2")
Postavljanje bilješki
Svaka izjava može se označiti bilješkom stavljanjem iznad te izjave. Od Jave 8, bilješke se također mogu stavljati ispred vrste.
1. Iznad deklaracija
Kao što je gore spomenuto, Java napomene mogu se postaviti iznad deklaracije klase, metode, sučelja, polja i drugih programskih elemenata.
Primjer 2: Primjer bilješke @SuppressWarnings
import java.util.*; class Main ( @SuppressWarnings("unchecked") static void wordsList() ( ArrayList wordList = new ArrayList(); // This causes an unchecked warning wordList.add("programiz"); System.out.println("Word list => " + wordList); ) public static void main(String args()) ( wordsList(); ) )
Izlaz
Popis riječi => (programiz)
Ako se gornji program kompajlira bez upotrebe @SuppressWarnings("unchecked")
napomene, kompajler će i dalje kompajlirati program, ali dat će upozorenja poput:
Main.java koristi neprovjerene ili nesigurne operacije. Popis riječi => (programiz)
Dobivamo upozorenje
Main.java koristi neprovjerene ili nesigurne operacije
zbog sljedeće izjave.
ArrayList wordList = new ArrayList();
This is because we haven't defined the generic type of the array list. We can fix this warning by specifying generics inside angle brackets .
ArrayList wordList = new ArrayList();
2. Type annotations
Before Java 8, annotations could be applied to declarations only. Now, type annotations can be used as well. This means that we can place annotations wherever we use a type.
Constructor invocations
new @Readonly ArrayList()
Type definitions
@NonNull String str;
This declaration specifies non-null variable str of type String
to avoid NullPointerException
.
@NonNull List newList;
This declaration specifies a non-null list of type String
.
List newList;
This declaration specifies a list of non-null values of type String
.
Type casts
newStr = (@NonNull String) str;
extends and implements clause
class Warning extends @Localized Message
throws clause
public String readMethod() throws @Localized IOException
Type annotations enable Java code to be analyzed better and provide even stronger type checks.
Types of Annotations
1. Predefined annotations
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. Meta-annotations
@Retention
@Documented
@Target
@Inherited
@Repeatable
3. Custom annotations
These annotation types are described in detail in the Java Annotation Types tutorial.
Use of Annotations
- Compiler instructions - Annotations can be used for giving instructions to the compiler, detect errors or suppress warnings. The built-in annotations
@Deprecated
,@Override
,@SuppressWarnings
are used for these purposes. - Compile-time instructions - Compile-time instructions provided by these annotations help the software build tools to generate code, XML files and many more.
- Runtime upute - Neke bilješke mogu se definirati dati upute programa za vrijeme izvođenja. Ovim se bilješkama pristupa pomoću Java Reflection.