浏览 1667 次
锁定老帖子 主题:简单利用java反射 理解注解的作用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-21
在新版框架中 都加入了 注解大大减少了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 使用了注解 @NewHelloWord public class TestBean { public TestBean(String name) { this.name = name; } @NewHelloWord("你好") private String name; @Override @NewHelloWord public 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... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |