标签:annotation 注解 自定义注解
经过上面的学习,我们可以通过元注解来实现一个自定义的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);
}
}
}
}
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);
}
}
}
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注解(一)
标签:annotation 注解 自定义注解
原文地址:http://blog.csdn.net/emilyrr/article/details/47345601