Рассмотрим этот код:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Bar {
Foo foo() default FooImpl.FooConstant;
}
Ошибка компилятора:
Значение аннотации не допустимого типа
Если я заменил Foo
на FooImpl
, код будет принят.
В чем причина такого поведения?