Como criar uma annotation e fazer com que uma classe pegue as informações dela

5 respostas
EuclidesFilizola

Olá pessoal do GUJ. eu estou com o seguinte problema: quero criar uma função simples, para apenas pegar os campos de uma annotation qualquer. o problema é que eu não to conseguindo criar a annotation, talvez não esteja entendendo bem como usa-la. e aqui eu tenho os 2 códigos q eu to tentando fazer. por favor me ajudem.

package prog1;

import java.lang.reflect.*;
	 
	 public class TakeField {
	 
	   public static void main(String args[]) {
	         try {
	             Class cls = Class.forName("java.lang.String");
	             
	             Field listaCampo[] = cls.getDeclaredFields();
	                 for (int i = 0; i < listaCampo.length; i++) {
	                  Field fld = listaCampo[i];
	                  System.out.println("nome campo = " + fld.getName());
	                  System.out.println("membro da classe = " + fld.getDeclaringClass());
	                  System.out.println("tipo = " + fld.getType());
                                  }                   
	             }catch (Throwable e) {
	               System.err.println(e);
         }
	  }
    }
.. essa daqui é pra pegar os campos ... porém ta incompleta

e aqui eu estava tentando criar uma annotation, mas não sei como completa-la

package prog1;

import prog1.TakeField;
import java.lang.reflect.*;
import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Taget(ElementType.FIELD)

public @interface Information {
	Class type();
	String method();
	
	Field fdl;
	

}

ainda tem o detalhe de no "target" ta a linhazinha vermelha com algum erro. ajuda ae por favor ! é meio urgente.. .está valendo 1 coca-cola ! hauihahaihauhauiaiuha ...

agradeço antecipadamente !

5 Respostas

T

Amigo, você está com o nariz entupido, ou está mexendo muito com cravos de defunto (nome cientìfico “Tagetes”)?

peerless

Veja meu método que faz isso que tu quer:

/** * Verifica um método, em busca de anotações tratadas pelo framework * @param m o método * @return um objeto do tipo IsAction, preenchido com os respectivos valores das anotações * @return null em caso do método não possuir nenhuma anotação interpretada pelo SwingMVC */ private IsAction hasAction(Method m) { if (m.isAnnotationPresent(IsAction.class)) { IsAction isAction = m.getAnnotation(IsAction.class); return isAction; } return null; }

acho que nem precisa dizer mais nada, ou precisa? []s :slight_smile:

PS: IsAction é a interface de anotação.

EuclidesFilizola

ahaihaihauihauiha … é verdade ! … me desculpa =D … é a pressa ! foi mal =) … ahauha …

peerless

thingol:
Amigo, você está com o nariz entupido, ou está mexendo muito com cravos de defunto (nome cientìfico “Tagetes”)?

comeu o ‘r’

@Target
EuclidesFilizola

peerless => beleza cara. seu método é bonito. porém eu tenho que fazer meio que na mão, tipo. eu preciso fazer dessa forma , tanto para aprender como para poder explicar para pessoa que está exigindo de mim nesse momento ! =D

Criado 16 de janeiro de 2008
Ultima resposta 16 de jan. de 2008
Respostas 5
Participantes 3