Sök…


Introduktion

Annotationsprocessor är ett verktyg inbyggt javac för skanning och bearbetning av kommentarer vid sammanställningstid.

Anteckningar är en klass metadata som kan associeras med klasser, metoder, fält och till och med andra kommentarer. Det finns två sätt att få tillgång till dessa anteckningar under körning via reflektion och vid sammanställningstid via annotationsprocessorer.

@NonNull Annotation

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

Här @NonNull är en kommentar som bearbetas kompileringstid av Android-studion för att varna dig för att den specifika funktionen behöver inte null-parameter.

Typer av kommentarer

Det finns tre typer av anteckningar.

  1. Marker Annotation - annotation som inte har någon metod

    @interface CustomAnnotation {}
    
  1. Enkelvärdesanteckning - kommentar som har en metod

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Multi-Value Annotation - annotation som har mer än en metod

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

Skapa och använda anpassade kommentarer

För att skapa anpassade kommentarer måste vi bestämma

  • Mål - som dessa kommentarer kommer att fungera på som fältnivå, metodnivå, typnivå etc.
  • Förvaring - till vilken nivåanteckning kommer att finnas tillgänglig.

För detta har vi inbyggda anpassade kommentarer. Kolla in de mest använda:

@Mål

Mål och vad det betyder

@Bibehållande

Retention och vad det betyder

Skapa anpassad kommentar

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

Använda anpassad kommentar

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

värdet som tillhandahålls i @CustomAnnotation kommer att konsumeras av en annotationsprocessor kan vara att generera kod vid sammanställningstid etc.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow