首页 > 编程语言 > 详细

Java Annotation详解+自定义java注解(一)

时间:2015-08-08 00:04:33      阅读:346      评论:0      收藏:0      [点我收藏+]
  • 技术分享
    上述思维导图的下载地址为:http://download.csdn.net/detail/emilyrr/8975487
  • 注解的注解:
    技术分享
  • 经过上面的学习,我们可以通过元注解来实现一个自定义的HelloWorld注解

  • 第一步:定义一个HelloWorld注解

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)//定义了注解的作用位置:在方法上
@Inherited//允许子类继承父类中的注解
public @interface HelloWorld {
    public String name()default "";
}
  • 新建一个注解解析类,底层通过反射机制实现
public class ParseAnnotation {
    public void parseMethod(Class clazz) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{
        Object obj = clazz.newInstance();
        Method[] methods=clazz.getDeclaredMethods();

        for(Method m:methods){
            HelloWorld hello=m.getAnnotation(HelloWorld.class);
            String name="";
            if(hello!=null){
                name=hello.name();
                m.invoke(obj, name);
            }
        }

 }
}
  • 新建一个普通类,调用HelloWorld注解
public class SayHello {

    @HelloWorld(name="Yc")
    public void say(String name){
        if(name == null || name.equals("")){  
            System.out.println("hello world");  
        }else{  
            System.out.println( "hello world\t"+name);  
        }  
    }
}
  • 使用Junit测试(新建一个class,在main方法中测试也可以)
 public void testApp() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException
    {
        ParseAnnotation pa=new ParseAnnotation();
        pa.parseMethod(SayHello.class); 
    }
  • 下面我们来看测试结果:
    技术分享

通过测试类可以看出,我们并没有直接new SayHello对象,也没有调用它的 say( )方法,而是通过注解的解析框架用反射机制激活的say。影哥说,这个编码的变革时代。

版权声明:本文为博主原创文章,谢谢参考!有问题的地方,欢迎纠正,一起进步。

Java Annotation详解+自定义java注解(一)

原文:http://blog.csdn.net/emilyrr/article/details/47345601

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!