Blaze CBAV (проверка аннотаций на основе ограничений) все еще находится в разработке, но уже способна к некоторой необычной проверке времени компиляции.По сути, вы можете использовать эту библиотеку для добавления метаинформации в ваши аннотации для генерации ошибок компилятора на основе ваших собственных условий.
Предопределены некоторые полезные ограничения по умолчанию, но вы также можете определить свои собственные ограничения, внедрив валидатор исвяжите это с помощью аннотации ограничения на собственное ограничение.Реализация валидаторов должна присутствовать в скомпилированной форме в вашем classpath, когда вы хотите использовать свое собственное ограничение, поэтому вы можете захотеть упаковать его отдельно.Попробуйте и изучите возможности;)
Например, вы можете убедиться, что данное значение аннотации встречается в классе только один раз:
public @interface MyAnnotation{
@UniqueValueConstraint(scope=ConstraintScope.CLASS, errorMessage="This value must be unique within class level!")
String value();
}
public class MyClass{
@MyAnnotation("test")
void test1(){}
@MyAnnotation("test")
void test2(){} // Compiler error with your message ;)
}
Вы можете найтипроект на Github: https://github.com/Blazebit/blaze-cbav