Problema com Annotation

1 resposta
D

Nunca usei anotação, estava tentando entender como isso funciona... no meu exemplo eu descobriria se um método tem a minha anotação e se tivesse eu leria os valores da mesma....

Tenho as duas classes no mesmo package

package br.com.daniel.teste.annotation;

public @interface Anotacao
{
	int cod();
	String nome();
	
}
package br.com.daniel.teste.annotation;

import java.lang.reflect.Method;

public class TesteAnotacao
{
	@Anotacao( cod = 10, nome = "teste" )	
	public int testar()
	{
		try
		{
			for (Method m : Class.forName("br.com.daniel.teste.annotation.TesteAnotacao").getMethods()) {
				if (m.isAnnotationPresent(Anotacao.class)) {
					Anotacao aa = m.getAnnotation(Anotacao.class);
					System.out.println(aa.cod());
					System.out.println(aa.nome());
				}
			}
		}
		catch (SecurityException e){ e.printStackTrace(); }
		catch (ClassNotFoundException e){ e.printStackTrace(); }
		return 10;
	}
	
	public static void main (String args[]){
		TesteAnotacao t = new TesteAnotacao();
		t.testar();
	}
}

mas ele não entra no if (m.isAnnotationPresent(Anotacao.class)) { nunca

alguém pode me ajudar?

[]s

1 Resposta

D

o Problema era que faltava isso…

@Retention(RetentionPolicy.RUNTIME)

deveria ser

1. package br.com.daniel.teste.annotation;  
   2.   
      @Retention(RetentionPolicy.RUNTIME)
   3. public @interface Anotacao  
   4. {  
   5.     int cod();  
   6.     String nome();  
   7.       
   8. }

[]s

Criado 23 de maio de 2008
Ultima resposta 27 de mai. de 2008
Respostas 1
Participantes 1