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