Não consigo utilizar outros tipos em atributos de uma @interface

Não consigo utilizar uma classe minha como um tipo em um atributo de anotação @interface. Mas por que então eu consigo utilizar o tipo String sendo que ele não é primitivo?

public @interface Annotation { MyClass atribute() default null; }

Olá @Renan_da_Hikkit

Você pode fazer assim:

public @interface Annotation{ 
    Class<? extends MyClass> atribute() default MyClass.class; 
}

Por padrão o Java não permite outra classe a não ser String e Class, como diz o erro:
Invalid type MyClass for the annotation attribute Annotation.atribute; only primitive type, String, Class, annotation, enumeration are permitted or 1-dimensional arrays thereof

Só pode tipos primitivos, Classe Class ou String, Annotation, Enum ou Array (vetor).

1 curtida