简单利用java反射 理解注解的作用
在新版框架中 都加入了 注解大大减少了xml配置的臃肿。
?
?
新建注解
?
@Retention(RetentionPolicy.RUNTIME)public @interface NewHelloWord { ?public String value() default "hello";}
?
通过反射 实现方法调用前后 注解的功能。
?
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(NewHelloWord.class)) { 获取注解 ?NewHelloWord hw = m.getAnnotation(NewHelloWord.class);//System.out.println(hw.value());try {System.out.println(hw.value() + " before...");m.invoke(obj, new Object[] {});System.out.println(hw.value() + " after...");} catch (Exception e) {e.printStackTrace();}}}}}}
?
?
? 测试bean 使用了注解
@NewHelloWordpublic class TestBean {public TestBean(String name) {this.name = name;}@NewHelloWord("你好")private String name;@Override@NewHelloWordpublic String toString() {System.out.println(this.name);return this.name;}}
?
?
测试
?
public class MainTest {/** * @param args */public static void main(String[] args) {TestBean tb = new TestBean("abcd");Parser p = new Parser();p.parse(tb, "toString");}}
?
?
最后输出
?
hello before...
abcd
hello after...