我正在尝试使用Java注解,但似乎无法让我的代码识别其中存在的注解。我做错了什么?
import java.lang.reflect.*;
import java.lang.annotation.*;
@interface MyAnnotation{}
public class FooTest
{
@MyAnnotation
public void doFoo()
{
}
public static void main(String[] args) throws Exception
{
Method method = FooTest.class.getMethod( "doFoo" );
Annotation[] annotations = method.getAnnotations();
for( Annotation annotation : method.getAnnotations() )
System.out.println( "Annotation: " + annotation );
}
}
发布于 2009-04-08 05:26:34
您需要使用annotation接口上的@Retention注释将注释指定为Runtime注释。
即
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{}
发布于 2012-03-13 05:02:38
使用@Retention(RetentionPolicy.RUNTIME)
检查以下代码。它正在为我工作:
import java.lang.reflect.*;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1{}
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{}
public class FooTest {
@MyAnnotation1
public void doFoo() {
}
@MyAnnotation2
public void doFooo() {
}
public static void main(String[] args) throws Exception {
Method method = FooTest.class.getMethod( "doFoo" );
for( Annotation annotation : method.getAnnotations() )
System.out.println( "Annotation: " + annotation );
method = FooTest.class.getMethod( "doFooo" );
for( Annotation annotation : method.getAnnotations() )
System.out.println( "Annotation: " + annotation );
}
}
https://stackoverflow.com/questions/728605
复制相似问题