黑马程序员技术交流社区

标题: Annotation [打印本页]

作者: 李井山    时间: 2012-3-27 15:50
标题: Annotation
Annotation的视频我看了,讲了注解的位置,持续时间和属性,但我还是不知道注解和他所修饰的属性,方法什么的有什么关系啊?
作者: yangshang1    时间: 2012-3-27 17:39
利用Annotation可以进行反射
先定义
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation
{
        String hello() default "shengsiyuan";

        String world();
}

作者: yangshang1    时间: 2012-3-27 17:40
@MyAnnotation(hello = "beijing", world = "shanghai")
public class MyTest
{
        @MyAnnotation(hello = "tianjin", world = "shangdi")
       
       
        public void output()
        {
                System.out.println("output something!");
        }
}
在应用Anntation
作者: yangshang1    时间: 2012-3-27 17:40


import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class MyReflection
{
        public static void main(String[] args) throws Exception
        {
                MyTest myTest = new MyTest();
               
                Class<MyTest> c = MyTest.class;
               
                Method method = c.getMethod("output", new Class[]{});
               
                if(method.isAnnotationPresent(MyAnnotation.class))
                {
                        method.invoke(myTest, new Object[]{});
                       
                        MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation.class);
                       
                        String hello = myAnnotation.hello();
                        String world = myAnnotation.world();
                       
                        System.out.println(hello + ", " + world);
                }
               
                Annotation[] annotations = method.getAnnotations();
               
                for(Annotation annotation : annotations)
                {
                        System.out.println(annotation.annotationType().getName());
                }
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
        }
}
测试一下
结果是
output something!
tianjin, shangdi
MyAnnotation

作者: yangshang1    时间: 2012-3-27 17:45
还有在junit4中也是用的注解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2