Java - заставить класс, реализующий интерфейс, объявить аннотацию

Я пытаюсь заставить класс SomeImpl объявить аннотацию @SomeAnnotation, если он реализует интерфейс SomeInterface. Решение может изменить объявление SomeInterface.

public interface SomeInterface {}

public class SomeImpl implements SomeInterface -> compilation error

@SomeAnnotation
public class SomeInterfaceImpl implements SomeInterface -> compilation ok

Вариант использования: я использую объекты, реализующие SomeInterface в методе (не написанном мной, это внешняя библиотека), который всегда читает аннотацию @SomeAnnotation и не может быть пустым или заданным по умолчанию.

Спасибо!


person italktothewind    schedule 01.03.2018    source источник
comment
Вы хотите сделать это, потому что...   -  person chrylis -cautiouslyoptimistic-    schedule 01.03.2018
comment
Каков вариант использования? Какую проблему ты пытаешься решить?   -  person Mureinik    schedule 01.03.2018
comment
Вариант использования: я использую объекты, реализующие SomeInterface в методе (не написанном мной, это внешняя библиотека), который всегда читает аннотацию @SomeAnnotation и не может быть пустым или заданным по умолчанию. Я вставил это в вопрос сейчас.   -  person italktothewind    schedule 01.03.2018
comment
Поэтому напишите инструмент анализа кода, чтобы сканировать ваш код на наличие этой комбинации. Сама Java не может обеспечить соблюдение ваших ограничений.   -  person Andreas    schedule 01.03.2018
comment
Пишите правильные тесты, это единственный способ.   -  person fps    schedule 01.03.2018


Ответы (1)


Кажется, это можно сделать только с помощью процессора аннотаций (https://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html).

person italktothewind    schedule 04.03.2018