É possivel utilizar Annotatios com Generics desta maneira?

3 respostas
mchiareli

tenho uma annotation para indicar que uma classe é configuravel:

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

@Target({TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Configuravel {

}

tenho uma classe qualquer marcado com essa annotation:

@configuravel
public class Device(){

...corpo da classe

}

gostaria de fazer algo desse tipo:

List<Configuravel> lista = new ArrayLista();
lista.add(new Device());

Mas o compilador nao deixa, tipo gostaria de marcar a classe como configuravel e utilizar isso dessa maneria…

existe essa possibilidade, ja tentei diversas forma…

nao queria suar interface para isso queria fazer com annotations msm…

:?:

3 Respostas

T

Quando você marca uma classe com uma annotation, ela não implementa essa interface (já que uma annotation é uma anotação sobre essa classe, não propriamente uma interface “clássica”).

Portanto List<Configuravel> não vai funcionar, já que isso quer dizer “Lista de algo que implementa a interface Configuravel” - o que não é o caso quando você só marca a classe com a annotation.

sergiolopes

Voce nao pode fazer “Configuravel c = new Device()” simplesmente porque Device nao é um Configuravel. Anotacoes nao implicam em herança de tipos (é um).

Lembre-se que anotações sao apenas metadados que marcam seu codigo. Poderia-se ate falar que as anotacoes nao sao o seu codigo, elas apenas falam alguma coisa sobre ele.

Ou seja, o que voce quer fazer é impossivel :slight_smile:

Se realmente precisa de List<Configiguravel>, Configuravel deveria ser uma interface e nao uma anotacao.

mchiareli

eh…eu pensei isso msm…queria ter certeza disso…

vlw msm ae… =)

Criado 14 de março de 2007
Ultima resposta 14 de mar. de 2007
Respostas 3
Participantes 3