Я хочу аннотировать некоторые поля данного класса бинов следующей аннотацией:
@Target({FIELD})
@Retention(RUNTIME)
public @interface Process {
Class<? extends ProcessingStrategy> using() default DefaultImplStrategy.class;
}
Не вдаваясь в домен слишком много, каждому аннотированному свойству нужно задать для него ProcessingStrategy, а следовательно, и свойство using () для аннотации. Это нормально и работает так, как мне бы хотелось.
Я также хочу указать реализацию стратегии по умолчанию, которая будет использоваться большую часть времени (по умолчанию, определенная ниже). Это отлично работает в Eclipse.
Однако, когда я пытаюсь скомпилировать это, используя обычный JDK (вызывается через maven), я получаю следующую ошибку:
found : java.lang.Class<DefaultImplStrategy>
required: java.lang.Class<? extends ProcessingStrategy>
Я предполагаю, что здесь есть какая-то комбинация обобщений, аннотаций, литералов классов и значений по умолчанию, но я, честно говоря, не знаю почему. Я взглянул на правила, касающиеся значений по умолчанию в JLS, и, похоже, я ничего не нарушаю.
Учитывая, что DefaultImplStrategy определенно реализует ProcessingStrategy, что я здесь не так делаю?