Java Annotation详解+自定义java注解(一)
2015-08-07 21:52
537 查看
上述思维导图的下载地址为: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容器类---LinkedList
- JAVA接口的用法
- JAVA在ACM中的几点应用
- eclipse加载jar包,如何直接查看源代码
- 06_二维数组【四种格式、打印杨辉三角、Java中参数传递、数据加密案例】、面向对象【对象内存图】
- 倒油问题,广度优化搜索,java
- Spring先进的交易管理困难剖析
- 安装并配置sonar
- 航电 2212 java AC
- idea类似eclipse鼠标技巧java api信息
- 慕课网 Java注解 学习笔记
- JAVA排序汇总
- (转)JAVA排序汇总
- java线层的使用
- springmvc 下使用自定义注解获取登录信息
- Java线程:大总结
- (转)Java线程:大总结
- Java线程:新特征-原子量,障碍器
- (转)Java线程:新特征-原子量,障碍器
- Java学习笔记-----Socket全双工通信