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

1 resposta Resolvido
java
R

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; }

1 Resposta

M
Solucao aceita

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).

Criado 30 de novembro de 2019
Ultima resposta 30 de nov. de 2019
Respostas 1
Participantes 2