При использовании настраиваемого квалификатора рядом с квалификатором @Observes, чтобы поймать событие, у меня есть эта ошибка компиляции.Аннотации «@Added» запрещены для этого местоположения при использовании пользовательской аннотации с событиями в CDI
Все классы находятся в одном пакете, поэтому проблема не в операторах импорта. Я уже проверил это.
@Inject
private Logger logger;
List<Book> inventory = new ArrayList<>();
public void addBook(@Observes @Added Book book) {
logger.warning("adding book" + book.getTitle());
inventory.add(book);
}
public void removeBook(@Observes @Removed Book book) {
logger.warning("remove book");
}
Таким образом, эта линия: общественная пустота addBook (@Observes @Added Книга книга) {
и это как: общественная пустота removeBook (@Observes @Removed Книга книга) {
отмечены со следующей ошибкой: аннотация @Added (@Removed) не разрешена для этого местоположения.
И вот код, который определяет методы addBook и removeBook. Здесь нет проблем.
@Inject
@Added
private Event<Book> bookAddedEvent;
@Inject
@Removed
private Event<Book> bookRemovedEvent;
public Book createBook(String title, float price, String description) {
Book book = new Book(title, price, description);
book.setNumber(numberGenerator.generateNumber());
bookAddedEvent.fire(book);
return book;
}
public void deleteBook(Book book) {
bookRemovedEvent.fire(book);
}
Человек ... ты величайший! Благодарю. У меня был только @Target ({TYPE, FIELD, METHOD}) '. – Gica