当前位置:编程学习 > JAVA >>

java Annotation初用

对java的Annotation不是太熟悉,不过最近又要用,所以就找了相关的文档看了下,并写了一个Demo
 
基本的需求如下:
 
Server根据对方传递的类型码找到具体的某个类的具体方法并运行。个人觉得用Annotation去注释代码比较好,也减少配置文件,所以就体验了一把。
 
 
具体代码如下:
 
1、先定义一个自己的Annotation
 
@Retention(RetentionPolicy.RUNTIME)
public @inte易做图ce CodeAnnotation {
    String code();
}
     这里一定要将自己的Annotation定义为运行时的,默认好像是编译时的,所以无法动态的根据server接收到的code去匹配函数
   2、@Override定义父类basicHandler通过放射去获取执行子类的方法
 
 
    public Message execute(Message message) {
        String code = message.getCode();
        String className = this.getClass().getName();
        Message msg = null;
        try {
            for (Method m : Class.forName(className).getMethods()) {
                if (m.getAnnotation(CodeAnnotation.class) != null) {
                    if (code.equals(m.getAnnotation(CodeAnnotation.class).code())) {
                        try {
                            msg = (Message)m.invoke(this, message);
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        } catch (InvocationTargetException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return msg;
    }
 
      这是基类中的方法,基类实现了接口中的execute方法,子类继承父类,并添加具体的业务方法和代码
   3、一个具体的handler类示例
@CodeAnnotation(code = "10000001")
    public Message method(Message message) {
        System.out.println(message.getUserId());
        //TODO:
        return null;
    }    上面的代码,基本上手工的完成了命令码和方法的映射,个人对Spring还不是很精通,不知道Spring有没有完成现成的功能,不想重复早轮子。希望大侠们可以留言告之


摘自 潘潘.eagle
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,