Поиск…


Вступление

Обработчик аннотации - это инструмент, созданный в javac для сканирования и обработки аннотаций во время компиляции.

Аннотации - это класс метаданных, которые могут быть связаны с классами, методами, полями и даже другими аннотациями. Существует два способа доступа к этим аннотациям во время выполнения через отражение и во время компиляции с помощью обработчиков аннотаций.

@NonNull Annotation

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

Здесь @NonNull - это аннотация, которая обрабатывается временем компиляции студией android, чтобы предупредить вас о том, что для конкретной функции нужен параметр non null.

Типы аннотаций

Существует три типа аннотаций.

  1. Маркерная аннотация - аннотация, не имеющая метода

    @interface CustomAnnotation {}
    
  1. Однозначная аннотация - аннотация, которая имеет один метод

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Многозначная аннотация - аннотация, содержащая несколько методов

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

Создание и использование пользовательских аннотаций

Для создания пользовательских аннотаций нам необходимо решить

  • Цель - по которой эти аннотации будут работать как на уровне поля, уровне метода, так и на уровне типа и т. Д.
  • Сохранение - на каком уровне будет доступна аннотация.

Для этого мы создали пользовательские аннотации. Ознакомьтесь с этими наиболее часто используемыми:

@Target

Цель и что это значит

@Retention

Сохранение и что это означает

Создание пользовательской аннотации

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

Использование пользовательской аннотации

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

значение, предоставленное внутри @CustomAnnotation будет потребляться процессором Annotation, это может генерировать код во время компиляции и т. д.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow