`
qinjianpinggood
  • 浏览: 9502 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Annotation入门

 
阅读更多

 

Annotation是Jdk5的一个新特性,第一个自定义的注解。

package com.freedie.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)//Retention:存在
public @interface HelloWorld {
   public String value() default "hello";
}

 

package com.freedie.annotation;

public class TestBean {

	private String name;
	public TestBean(String name){
		this.name=name;
	}
	@HelloWorld("qinjianping")
	@Override
	public String toString() {
		System.out.println("*************toString is invoked************");
		return this.name;
	}
}
package com.freedie.annotation;

import java.lang.reflect.Method;

public class Parser {
	public void parse(Object obj, String methodName) {
		Method[] ms = obj.getClass().getMethods();
		for (Method m : ms) {
			if (m.getName().equals(methodName)) {
				if (m.isAnnotationPresent(HelloWorld.class)) {
					HelloWorld hw = m.getAnnotation(HelloWorld.class);
					try {
					       System.out.println(hw.value()+"--before");
					       m.invoke(obj, new Object[]{});
					       System.out.println(hw.value()+"--after");
					} catch (Exception e) {
					       e.printStackTrace();
					}
				}
			}
		}
	}
}

   

package com.freedie.annotation;

public class MainTest {
	public static void main(String[] args) {
                    TestBean tb=new TestBean("abcd");
                    Parser parser=new Parser();
                    parser.parse(tb, "toString");
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics