Я хочу аннотировать некоторые поля данного класса bean-компонентов следующей аннотацией:
@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, что я здесь делаю не так?