Szukaj…


Wprowadzenie

Procesor adnotacji to narzędzie wbudowane w javac do skanowania i przetwarzania adnotacji w czasie kompilacji.

Adnotacje to klasa metadanych, które można powiązać z klasami, metodami, polami, a nawet innymi adnotacjami. Istnieją dwa sposoby dostępu do tych adnotacji w czasie wykonywania przez odbicie i w czasie kompilacji za pomocą procesorów adnotacji.

@NonNull Adnotation

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

Tutaj @NonNull to adnotacja, która jest przetwarzana przez czas kompilacji przez studio Android, aby ostrzec, że dana funkcja wymaga parametru o wartości null.

Rodzaje adnotacji

Istnieją trzy rodzaje adnotacji.

  1. Adnotacja znacznika - adnotacja bez metody

    @interface CustomAnnotation {}
    
  1. Adnotacja o pojedynczej wartości - adnotacja, która ma jedną metodę

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Adnotacja wielowartościowa - adnotacja, która ma więcej niż jedną metodę

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

Tworzenie i używanie własnych adnotacji

Aby utworzyć niestandardowe adnotacje, musimy zdecydować

  • Cel - na którym te adnotacje będą działały na poziomie pola, poziomie metody, poziomie typu itp.
  • Przechowywanie - do jakiego poziomu adnotacje będą dostępne.

W tym celu wbudowaliśmy niestandardowe adnotacje. Sprawdź te najczęściej używane:

@Cel

Cel i co to znaczy

@Zatrzymywanie

Retencja i co to znaczy

Tworzenie niestandardowej adnotacji

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

Korzystanie z adnotacji niestandardowych

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

wartość podana w @CustomAnnotation zostanie wykorzystana przez @CustomAnnotation adnotacji może być do wygenerowania kodu w czasie kompilacji itp.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow