Pripisi Java (s primeri)

V tej vadnici bomo s pomočjo primerov izvedeli, kaj so pripisi, različni pripisi Java in kako jih uporabiti.

Pripisi Java so metapodatki (podatki o podatkih) za našo izvorno kodo programa.

Prevajalniku zagotavljajo dodatne informacije o programu, vendar niso del samega programa. Ti pripisi ne vplivajo na izvajanje prevedenega programa.

Pripisi se začnejo z @. Njegova sintaksa je:

 @AnnotationName 

Vzemimo primer @Overrideanotacije.

V @Overridezaznambe določa, da je metoda, ki je bila označena s tem pripisom preglasi metodo nadrazreda z istim imenom metode, vrsto vračanja, in seznam parametrov.

Uporaba ni obvezna @Overridepri razveljavitvi metode. Če pa jo uporabimo, prevajalnik med preglasitvijo metode prikaže napako, če je nekaj narobe (na primer napačna vrsta parametra).

Primer 1: Primer opombe @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(); ) ) 

Izhod

 Jaz sem pes. 

V tem primeru je metoda displayInfo()prisotna tako v superrazredu Žival kot v podrazredu Pes. Ko je ta metoda poklicana, se namesto metode v superrazredu pokliče metoda podrazreda.

Oblike zapiskov

Pripisi lahko vključujejo tudi elemente (člane / atribute / parametre).

1. Oznake označevalcev

Oznake označevalcev ne vsebujejo članov / elementov. Uporablja se samo za označevanje deklaracije.

Njegova sintaksa je:

 @AnnotationName () 

Ker ti pripisi ne vsebujejo elementov, je oklepaje mogoče izključiti. Na primer

 @Override 

2. Enodelni pripisi

Pripis enega samega elementa vsebuje samo en element.

Njegova sintaksa je:

 @AnnotationName (elementName = "elementValue") 

Če je samo en element, je pravilo, da ta element poimenujemo kot vrednost.

 @AnnotationName (value = "elementValue") 

V tem primeru je mogoče izključiti tudi ime elementa. Ime elementa bo privzeto vrednost.

 @AnnotationName ("elementValue") 

3. Pripisi več elementov

Ti pripisi vsebujejo več elementov, ločenih z vejicami.

Njegova sintaksa je:

 @AnnotationName (element1 = "vrednost1", element2 = "vrednost2") 

Umestitev pripisov

Vsako izjavo lahko označimo s pripisom, tako da jo postavimo nad to izjavo. Od Jave 8 lahko pripise postavite tudi pred vrsto.

1. Nad izjavami

Kot smo že omenili, lahko pripise Java postavimo nad izjave razreda, metode, vmesnika, polja in drugih elementov programa.

Primer 2: Primer opombe @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(); ) ) 

Izhod

 Seznam besed => (programiz) 

Če je zgornji program preveden brez uporabe @SuppressWarnings("unchecked")pripisov, ga bo prevajalnik še vedno prevedel, vendar bo dal opozorila, kot so:

Main.java uporablja nepreverjene ali nevarne operacije. Seznam besed => (programiz)

Dobili smo opozorilo

 Main.java uporablja nepreverjene ali nevarne operacije 

zaradi naslednje 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

  1. @Deprecated
  2. @Override
  3. @SuppressWarnings
  4. @SafeVarargs
  5. @FunctionalInterface

2. Meta-annotations

  1. @Retention
  2. @Documented
  3. @Target
  4. @Inherited
  5. @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.
  • Navodila za izvajanje - Nekatere pripise lahko definirate tako, da dajejo navodila programu med izvajanjem. Do teh pripisov lahko dostopate z uporabo Java Reflection.

Zanimive Članki...