1、Java 注解编程学习案例注解原理在这里就不具体介绍了,一定要记住你会反射就OK 因为注解也是类中的一部分好,我位来看看例子吧 1. 需求介绍 当用户给出一个类,就可以根据这个类的成员属性变量生成 name=liuqing分割符sex=male等 当然name 也是可以改变的 比如 性名=liuqing,可以自定义顺序 在这里我们将使用注解来实现 name 表示可变名字,如果name(成员属性变量) order 为排序顺序。 2. 定义接口 package ponent.annotation;import java.lang.annotation.ElementType;import java
2、.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/* * date 2011-4-15 * see * author 刘庆 * version 1.0 * */Retention(value=RetentionPolicy.RUNTIME)Target(ElementType.METHOD,ElementType.FIELD)public interface ComAnnotation /* * 显示字符输出名 * return S
3、tring */ String name() default ; /* * 排序如果按order 值排序 * return */ int order() default 1; 3. 实现接口方法 package ponent.annotation;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;import java.util.logging.Logger;/* * 2011-4-15 * author liuqing * *
4、/public class ComComponentInfoUtil /use jdk logger private static Logger log = Logger.getLogger(ComComponentInfoUtil.class.getName(); /* * Test ComComponentInfo * param args * throws Exception */ public static void main(String args) throws Exception ComComponentInfoUtil com = new ComComponentInfoUti
5、l(); UserInfoTest p = new UserInfoTest(); p.setAge(23); p.setUsb(false); p.setSex(;male;); p.setId(;2323;); System.out.println(com.getObjectToStr(p,;$|$;,true); /* * spit string * param obj * param spit * param isOrder * return * throws Exception */ public String getObjectToStr(Object obj,String spi
6、t,boolean isOrder) throws Exception StringBuffer strBuff = new StringBuffer(); Class clazz = obj.getClass(); HashMap; map = new HashMap;(); int i = 0; for (Method method:clazz.getMethods() if (this.isClassMethod(method.getName() ComAnnotation comAnnotation = this.getMethodAndFieldAnnotion(method, cl
7、azz); if (i ; 0) strBuff.append(spit); if (comAnnotation != null) /display information if (comAnnotation.name() = null | ;.equals(comAnnotation.name() strBuff.append(this.getFieldNameByMethodName(method .getName() + ;=;). append(method.invoke(obj, null); else strBuff.append(comAnnotation.name()+;=;)
8、. append(method.invoke(obj, null); /if true is order if (isOrder) if (comAnnotation.name() = null | ;.equals(comAnnotation.name() String str = this.getFieldNameByMethodName( method.getName() + ;=; + method.invoke(obj, null); if (map.containsKey(comAnnotation.order() log.info(;name ; +comAnnotation.n
9、ame() + ;:order = ; + comAnnotation.order() + ; already exists ;); map.put(comAnnotation.order(), str); else String str = comAnnotation.name() + ;=; + method.invoke(obj, null); if (map.containsKey(comAnnotation.order() log.info(;name ; +comAnnotation.name() + ;:order = ; + comAnnotation.order() + ;
10、already exists ;); map.put(comAnnotation.order(), str); else if (comAnnotation.name() = null | ;.equals(comAnnotation.name() strBuff.append(this.getFieldNameByMethodName( method.getName() + ;=;). append(method.invoke(obj, null); else strBuff.append(comAnnotation.name()+;=;). append(method.invoke(obj
11、, null); /if true is order if (isOrder) String str = comAnnotation.name() + ;=; + method.invoke(obj, null); if (map.containsKey(comAnnotation.order() log.info(;name ; +comAnnotation.name() + ;:order = ; + comAnnotation.order() + ; already exists ;); map.put(comAnnotation.order(), str); i+; if (isOrd
12、er) int j = 0 ; StringBuffer strBuffOrder = new StringBuffer(); for(Map.Entry; en:map.entrySet() if (j ; 0) strBuffOrder.append(spit + en.getValue(); else strBuffOrder.append(en.getValue(); j+; return strBuffOrder.toString(); else return strBuff.toString(); /* * getAnnotation Information * param met
13、hod * param clazz * return * throws Exception */ public ComAnnotation getMethodAndFieldAnnotion(Method method, Class clazz) throws Exception ComAnnotation comAnn = method.getAnnotation(ComAnnotation.class); if (comAnn != null) return comAnn; else String varFieldName = this.getFieldNameByMethodName(met
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1