Java märkused (koos näidetega)

Selles õpetuses õpime näidete abil, mis on märkused, erinevad Java märkused ja kuidas neid kasutada.

Java märkused on meie programmi lähtekoodi metaandmed (andmed andmete kohta).

Need annavad kompilaatorile programmi kohta lisateavet, kuid ei kuulu programmi enda juurde. Need märkused ei mõjuta kompileeritud programmi käivitamist.

Annotatsioonid algavad @. Selle süntaks on:

 @AnnotationName 

Võtame näite @Overridemärkustest.

@OverrideMärkus täpsustab, et meetod, mis on märgitud käesoleva märkuse alistab meetod ülemklassi sama meetodi nimi, tagastamise tüüp ja parameetrite nimekirja.

@OverrideMeetodi ületamisel ei ole see kohustuslik kasutada . Kui me seda siiski kasutame, annab kompilaator meetodi ületamisel vea, kui midagi on valesti (näiteks vale parameetri tüüp).

Näide 1: @Alusta kommenteerimise näide

 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(); ) ) 

Väljund

 Olen koer. 

Selles näites on meetod displayInfo()olemas nii superklassilises loomas kui ka alaklassis. Selle meetodi kutsumisel kutsutakse superklassis oleva meetodi asemel alamklassi meetodit.

Annotatsioonivormingud

Kommentaarid võivad sisaldada ka elemente (liikmed / atribuudid / parameetrid).

1. Markeri märkused

Markeri märkused ei sisalda liikmeid / elemente. Seda kasutatakse ainult deklaratsiooni märkimiseks.

Selle süntaks on:

 @AnnotationName () 

Kuna need märkused ei sisalda elemente, saab sulgud välja jätta. Näiteks,

 @Üle 

2. Ühe elemendiga märkused

Ühe elemendi märkuses on ainult üks element.

Selle süntaks on:

 @AnnotationName (elementNimi = "elementValue") 

Kui elemente on ainult üks, on tavapärane nimetada see element väärtuseks.

 @AnnotationName (väärtus = "elementValue") 

Sel juhul saab välistada ka elemendi nime. Elemendi nimi on vaikimisi väärtus.

 @AnnotationName ("elementValue") 

3. Mitme elemendi märkused

Need märkused sisaldavad mitut komadega eraldatud elementi.

Selle süntaks on:

 @AnnotationName (element1 = "väärtus1", element2 = "väärtus2") 

Märkuste paigutus

Iga deklaratsiooni saab märkega märkida, asetades selle selle deklaratsiooni kohale. Java 8-st alates saab märkusi panna ka tüübi ette.

1. Deklaratsioonide kohal

Nagu eespool mainitud, saab Java märkused paigutada klassi, meetodi, liidese, välja ja muude programmielementide deklaratsioonide kohale.

Näide 2: @SuppressWarnings Annotation Example

 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(); ) ) 

Väljund

 Sõnaloend => (programiz) 

Kui ülaltoodud programm kompileeritakse ilma @SuppressWarnings("unchecked")annotatsiooni kasutamata , kompileerib kompilaator ikkagi programmi, kuid annab selliseid hoiatusi:

Main.java kasutab kontrollimata või ebaturvalisi toiminguid. Sõnaloend => (programiz)

Me saame hoiatuse

 Main.java kasutab kontrollimata või ebaturvalisi toiminguid 

järgmise väite tõttu.

 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.
  • Käitusaegsed juhised - mõningaid märkusi saab määratleda, et anda programmile käsu ajal juhiseid. Nendele märkustele pääseb juurde Java Reflection abil.

Huvitavad Artiklid...