反射根据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