Zoeken…


Invoering

Annotatieprocessor is een in javac ingebouwde tool voor het scannen en verwerken van annotaties tijdens het compileren.

Annotaties zijn een klasse metagegevens die kunnen worden gekoppeld aan klassen, methoden, velden en zelfs andere annotaties. Er zijn twee manieren om toegang te krijgen tot deze annotaties tijdens runtime via reflectie en tijdens het compileren via annotatieprocessors.

@NonNull annotatie

public class Foo {
    private String name;
    public Foo(@NonNull String name){...};
    ...
}

Hier is @NonNull een annotatie die tijdens de compilatietijd door de android studio wordt verwerkt om u te waarschuwen dat de betreffende functie een niet-nul-parameter nodig heeft.

Soorten annotaties

Er zijn drie soorten annotaties.

  1. Marker Annotation - annotatie zonder methode

    @interface CustomAnnotation {}
    
  1. Annotatie met één waarde - annotatie met één methode

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Multi-waarde annotatie - annotatie met meer dan één methode

    @interface CustomAnnotation{  
        int value1();  
        String value2();  
        String value3();  
    }
    

Aangepaste annotaties maken en gebruiken

Voor het maken van aangepaste annotaties moeten we beslissen

  • Doel - waarop deze annotaties werken, zoals veldniveau, methode niveau, type niveau etc.
  • Retentie - tot welk niveau annotatie beschikbaar zal zijn.

Hiervoor hebben we aangepaste annotaties ingebouwd. Bekijk deze meestal gebruikte:

@Doelwit

Doel en wat het betekent

@Retention

Retentie en wat het betekent

Aangepaste annotatie maken

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

Aangepaste annotatie gebruiken

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

de waarde die in @CustomAnnotation wordt verstrekt, wordt door een Annotationprocessor gebruikt om code te genereren tijdens het compileren, enz.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow