读书人

反照根据annotation实现一些功能

发布时间: 2012-10-06 17:34:01 作者: rapoo

反射根据annotation实现一些功能

  public void initGetter(ActionInvocation invocation) {    HttpServletRequest request = ServletActionContext.getRequest();    Class actionClass = invocation.getAction().getClass();    Field[] fields = actionClass.getDeclaredFields();    for (Field field : fields) {      Annotation[] annotations = field.getDeclaredAnnotations();      for (Annotation annotation : annotations)        if (annotation instanceof GetterAndSetter) {          GetterAndSetter getterAndSetter = (GetterAndSetter)annotation;          field.setAccessible(true);          try {            Object value = field.get(invocation.getAction());            request.setAttribute(field.getName(), value);          } catch (Exception e) {            e.printStackTrace();          }        }    }  }例子2:/** *  */package annotation;import java.lang.annotation.Annotation;import annotation.FirstTag.ALLNAME;/** * @author Qianmz * @date Mar 26, 2010/11:10:56 PM */public class TagClazz {@FirstTag(name="Qianmz",id=1000,lastName=ALLNAME.ZHAO)public void doExecute(){}public static void main(String[] args) {TagClazz tc = new TagClazz();try {Annotation[] ann = tc.getClass().getMethod("doExecute").getAnnotations();for(Annotation an : ann){System.out.println(an.getClass());System.out.println(an.annotationType());System.out.println(((FirstTag)an).name());System.out.println(((FirstTag)an).id());System.out.println(((FirstTag)an).lastName());}} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}}}================================result:interface annotation.FirstTagQianmz1000ZHAO

读书人网 >软件架构设计

热点推荐