- 浏览: 741892 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (194)
- Webservice (6)
- ExtJs (2)
- Work Summary (4)
- CoreJava (51)
- Spring (10)
- EJB (5)
- struts1.x (3)
- C/C++ (5)
- DatabaseManager (19)
- Hibernate (5)
- Crytology (1)
- Web Server (5)
- Software Manager (5)
- WebUi (39)
- Web page (2)
- android (5)
- struts2 (12)
- Java 导出 Excel (1)
- Spring 与struts2 和Hibernate 4.0注解解决方安 (1)
- Dwr (1)
- maven3 (4)
- Windows (3)
- 表格头部信息不动使用Jquery 外部框架 (1)
- 软件行业动态 (1)
- mybatis (1)
- C# (3)
- MySQL (4)
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
LODOP插件开发 -
an52036:
u010980147 写道您的代码确实能生成条形码,但是打印出 ...
Java 条形码生成(一维条形码) -
di1984HIT:
学习了,很好~~
Ant 打包war 生成文件内容build.xml -
lhb319lhb:
如果 ajax(jquery)更新了 iframe 的 src ...
jquery 修改iframe src -
calosteward:
感谢楼主,除了一维条码,有没有相关二维码的资源呢?______ ...
Java 条形码生成(一维条形码)
注解原理在这里就不具体介绍了,一定要记住你会反射就OK
因为注解也是类中的一部分好,我位来看看例子吧
1. 需求介绍
当用户给出一个类,就可以根据这个类的成员属性变量生成 name=liuqing分割符sex=male等
当然name 也是可以改变的 比如 性名=liuqing,可以自定义顺序
在这里我们将使用注解来实现 name 表示可变名字,如果name(成员属性变量)
order 为排序顺序。
2. 定义接口
package com.zk.com.component.annotation; import java.lang.annotation.ElementType; import java.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 String */ String name() default ""; /** * 排序如果按order 值排序 * @return */ int order() default 1; }
3. 实现接口方法
package com.zk.com.component.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 * */ 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 ComComponentInfoUtil(); 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 spit,boolean isOrder) throws Exception { StringBuffer strBuff = new StringBuffer(); Class clazz = obj.getClass(); HashMap<Integer,String> map = new HashMap<Integer,String>(); int i = 0; for (Method method:clazz.getMethods()) { if (this.isClassMethod(method.getName())) { ComAnnotation comAnnotation = this.getMethodAndFieldAnnotion(method, clazz); 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()+"="). 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.name() + ":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() + " 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, 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 (isOrder) { int j = 0 ; StringBuffer strBuffOrder = new StringBuffer(); for(Map.Entry<Integer,String> 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 method * @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(method .getName()); Field field = clazz.getDeclaredField(varFieldName); comAnn = field.getAnnotation(ComAnnotation.class); if (field != null && comAnn != null) { return comAnn; } } return comAnn; } /** * is methodName query fieldName * @param methodName * @return String */ public String getFieldNameByMethodName(String methodName) { if (methodName.startsWith("get")) { String varFieldName = methodName.substring(3); String varUpToLower = this.getUpToLower(varFieldName); if (!("".equals(varUpToLower))) { return varUpToLower; } } else if (methodName.startsWith("is")) { String varFieldName = methodName.substring(2); String varUpToLower = this.getUpToLower(varFieldName); if (!("".equals(varUpToLower))) { return varUpToLower; } } return null; } /** * getName ---> Name ----return name; * @param str * @return String */ public String getUpToLower(String str) { if (str != null && !("".equals(str)) && str.length() > 0) { char ch[] = str.toCharArray(); ch[0] = (char)(ch[0] + 32); return new String(ch); } return ""; } /** * if true is Field * @param methodName * @return */ public boolean isClassMethod(String methodName) { if (methodName != null && methodName.length() > 3 && (methodName.startsWith("get")) && (!methodName.equals("getClass")) ) { return true; } else if (methodName != null && methodName.length() > 2 && (methodName.startsWith("is"))) { return true; } else { return false; } } }
4.因为可以在getter方法上加注解也可以在成员属性上加注解 例如
package com.zk.com.component.annotation; /** * * @author liuqing * */ public class UserInfoTest { @ComAnnotation(name="编号",order=1) private String id; @ComAnnotation(name="姓名",order=44) private String name; private int age; private String sex; private boolean isUsb; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ComAnnotation(order=2) public int getAge() { return age; } public void setAge(int age) { this.age = age; } @ComAnnotation(name="性别方法",order=3) public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @ComAnnotation(name="其它方法",order=3) public boolean isUsb() { return isUsb; } public void setUsb(boolean isUsb) { this.isUsb = isUsb; } }
运行
编号=2323$|$age=23$|$性别方法=male$|$姓名=null
2011-4-15 15:51:42 com.zk.com.component.annotation.ComComponentInfoUtil getObjectToStr
信息: name 性别方法:order = 3 already exists
核心工具修正
package com.zk.an; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; /** * use example * ComComponentInfoUtil com = new ComComponentInfoUtil(); * UserInfoTest p = new UserInfoTest(); * p.setAge(23); * p.setUsb(false); * p.setSex("male"); * p.setId("2323"); * com.getObjectToStr(p,"$|$",true); * 2011-4-15 * @author liuqing * */ public class ComComponentInfoUtil { //use jdk logger private static Logger log = Logger.getLogger(ComComponentInfoUtil.class.getName()); /** * Generation input string method * @param obj * @return */ public String input(Object obj){ String inStr = null; try { inStr = this.comInputToString(obj, "$|$", false); } catch (Exception e) { e.printStackTrace(); } return inStr; } /** * Generation output string method * @param obj * @return */ public String output(Object obj) { String outStr = null; try { outStr = this.comOutputToString(obj, "$|$", false); } catch (Exception e) { e.printStackTrace(); } return outStr; } /** * Generation input string method * @param obj * @param order * @return */ public String input(Object obj,boolean order){ String inStr = null; try { inStr = this.comInputToString(obj, "$|$", order); } catch (Exception e) { e.printStackTrace(); } return inStr; } /** * Generation output string method * @param obj * @param order * @return */ public String output(Object obj,boolean order) { String outStr = null; try { outStr = this.comOutputToString(obj, "$|$", order); } catch (Exception e) { e.printStackTrace(); } return outStr; } /** * spit string * @param obj * @param spit * @param isOrder * @return String * @throws Exception */ public String comInputToString(Object obj,String spit,boolean isOrder) throws Exception { StringBuffer strBuff = new StringBuffer(); Class clazz = obj.getClass(); HashMap<Integer,String> map = new HashMap<Integer,String>(); int i = 0; for (Method method:clazz.getMethods()) { if (this.isClassMethod(method.getName())) { ComInput comAnnotation = this.getInputMethodAndFieldAnnotion(method, clazz); if (comAnnotation != null) { //display information 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); } else { if (comAnnotation.name() != null && !("".equals(comAnnotation.name())) ) { if (i > 0) { strBuff.append(spit); } strBuff.append(comAnnotation.name()+"="). append(method.invoke(obj, null)); i++; } } } } } if (isOrder) { int j = 0 ; StringBuffer strBuffOrder = new StringBuffer(); for(Map.Entry<Integer,String> en:map.entrySet()) { if (j > 0){ strBuffOrder.append(spit + en.getValue()); } else { strBuffOrder.append(en.getValue()); } j++; } return strBuffOrder.toString(); } else { return strBuff.toString(); } } /** * spit string * @param obj * @param spit * @param isOrder * @return String * @throws Exception */ public String comOutputToString(Object obj,String spit,boolean isOrder) throws Exception { StringBuffer strBuff = new StringBuffer(); Class clazz = obj.getClass(); HashMap<Integer,String> map = new HashMap<Integer,String>(); int i = 0; for (Method method:clazz.getMethods()) { if (this.isClassMethod(method.getName())) { ComOutput comOutputAnnotation = this.getOutputMethodAndFieldAnnotion(method, clazz); if (comOutputAnnotation != null) { //display information if (isOrder) { String str = comOutputAnnotation.name() + "=" + method.invoke(obj, null); if (map.containsKey(comOutputAnnotation.order())) { log.info("name " +comOutputAnnotation.name() + ":order = " + comOutputAnnotation.order() + " already exists "); } map.put(comOutputAnnotation.order(), str); } else { if (comOutputAnnotation.name() != null && !("".equals(comOutputAnnotation.name())) ) { if (i > 0) { strBuff.append(spit); } strBuff.append(comOutputAnnotation.name()+"="). append(method.invoke(obj, null)); i++; } } } } } if (isOrder) { int j = 0 ; StringBuffer strBuffOrder = new StringBuffer(); for(Map.Entry<Integer,String> 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 method * @param clazz * @return * @throws Exception */ public ComInput getInputMethodAndFieldAnnotion(Method method, Class clazz) throws Exception{ ComInput comAnn = method.getAnnotation(ComInput.class); if (comAnn != null) { return comAnn; } else { String varFieldName = this.getFieldNameByMethodName(method .getName()); Field field = clazz.getDeclaredField(varFieldName); comAnn = field.getAnnotation(ComInput.class); if (field != null && comAnn != null) { return comAnn; } } return comAnn; } public ComOutput getOutputMethodAndFieldAnnotion(Method method, Class clazz) throws Exception{ ComOutput comAnn = method.getAnnotation(ComOutput.class); if (comAnn != null) { return comAnn; } else { String varFieldName = this.getFieldNameByMethodName(method .getName()); Field field = clazz.getDeclaredField(varFieldName); comAnn = field.getAnnotation(ComOutput.class); if (field != null && comAnn != null) { return comAnn; } } return comAnn; } /** * is methodName query fieldName * @param methodName * @return String */ public String getFieldNameByMethodName(String methodName) { if (methodName.startsWith("get")) { String varFieldName = methodName.substring(3); String varUpToLower = this.getUpToLower(varFieldName); if (!("".equals(varUpToLower))) { return varUpToLower; } } else if (methodName.startsWith("is")) { String varFieldName = methodName.substring(2); String varUpToLower = this.getUpToLower(varFieldName); if (!("".equals(varUpToLower))) { return varUpToLower; } } return null; } /** * getName ---> Name ----return name; * @param str * @return String */ public String getUpToLower(String str) { if (str != null && !("".equals(str)) && str.length() > 0) { char ch[] = str.toCharArray(); ch[0] = (char)(ch[0] + 32); return new String(ch); } return ""; } /** * if true is Field * @param methodName * @return */ public boolean isClassMethod(String methodName) { if (methodName != null && methodName.length() > 3 && (methodName.startsWith("get")) && (!methodName.equals("getClass")) ) { return true; } else if (methodName != null && methodName.length() > 2 && (methodName.startsWith("is"))) { return true; } else { return false; } } }
发表评论
-
ubuntu 安装JDK失败
2020-09-01 20:40 0文件/etc/apt/sources.list是一个普通可 ... -
ubuntu完美卸载JDK
2020-09-01 12:31 781要删除 OpenJDK (如果已安装的话)。首先,检查是安装 ... -
freemark 基本语法
2018-03-22 23:19 903reemarker的基本语法及入门基础 一、freem ... -
linux 新增硬盘分区并挂载
2016-06-02 12:45 1711运行fdisk -l 查看计算机对应的硬盘信息 Disk ... -
JasperReports打印图片
2016-05-21 22:20 2978long start = System.currentTim ... -
CAS 客户端与一般Web项目集成
2015-07-04 16:20 16218这一段时间有同事在问CAS -Client的问题这里就基本问 ... -
CAS-项目集成问题整理
2015-07-04 15:24 1423javax.net.ssl.SSLHandshakeExc ... -
CAS 与Tomcat 集成
2015-06-29 15:16 3770第一节:生成证书 第一步:生成keystore注意【cn= ... -
logback 日志配置生成当天志并分大小
2015-03-26 17:00 1665<?xml version="1.0&quo ... -
Mysql锁表问题
2015-03-26 09:57 9261)查询锁表问题 show open tables ... -
excel 导出文件中文问题
2015-03-24 23:39 1765package com.tzdr.common.utils; ... -
HttpURLConnection Post
2015-02-04 17:08 960/** * Http访问 * @param ht ... -
java获取classpath路径
2015-02-01 11:03 7841ClassLoader 提供了两个方法用于从装载的类路径中取 ... -
Con 表达式
2014-12-28 13:00 2936cron表达式详解 Cron表 ... -
Spring3 +JPA
2014-12-25 19:23 12651)META-INF/persistence.xml T ... -
Hessian调用方法
2014-09-26 12:45 6161package com.huashun.api. ... -
Freemark的使用
2014-06-09 15:27 1011freemark 解释 package com.pa ... -
J2EE安装问题
2014-03-20 16:39 993安装J2EE的SDK报错:could ... -
Applet 有包配置及开发HeloWorldl
2013-06-13 08:48 12171.开发代码 package com.newt ... -
Jetty嵌入式服务器端开发
2013-06-07 08:09 10991.服务器代码 package com.newto ...
相关推荐
【JAVA编程小案例】是一个适合初学者的编程实践项目,旨在帮助新手逐步理解并掌握Java编程语言的基础概念和核心语法。在这个案例中,你将有机会接触到以下关键知识点: 1. **Java环境配置**:首先,你需要了解如何...
Java编程技巧典型案例解析 在Java编程领域,掌握高效、实用的编程技巧对于提升代码质量、优化性能以及提高开发效率至关重要。本资料集旨在通过一系列典型示例,深入剖析Java编程中的常见问题及其解决策略,帮助...
《Java编程技巧典型案例解析》一书聚焦于这些关键技巧,通过24个精心挑选的源代码案例,深入浅出地展示了Java编程中的精华所在。以下是根据标题、描述以及压缩包子文件的文件名称列表,提炼出的一些核心Java编程知识...
这个“java se全程学习案例”压缩包包含了作者在深入学习Java SE过程中的实战代码,对于初学者来说,是提升Java基础知识和代码实践能力的宝贵资源。 Java SE的学习涵盖了许多方面,包括但不限于: 1. **基础语法**...
Java编程经典案例集锦是一份宝贵的资源,涵盖了Java语言的基础到高级应用,旨在帮助学习者深入理解和实践Java编程。这份资料包含了一百多个精心设计的小案例,每个案例都是经过实际运行验证的,确保了代码的正确性和...
学习Java编程,除了理论知识和实践案例,还需要不断进行代码调试和项目实战,这样才能更好地巩固所学,提升编程能力。同时,加入相关的技术社区,参与讨论和问题解答,也能加速学习进程。"Java编程200例"提供的实例...
《JAVA编程规范试题2》和《JAVA编码规范试题3》可能是对前面规范的补充和深入,可能包含更多的实战案例和常见问题解析,比如多线程编程、IO流操作、集合框架的使用等。这些题目可以帮助你检验对Java规范的理解程度,...
《求精要诀——Java EE编程开发案例精讲》是一本深入浅出的教程,旨在帮助读者掌握Java EE(企业版)的编程技术。PPT形式的教程通常以清晰直观的方式呈现复杂的概念,便于学习和理解。这个压缩包包含了一系列章节的...
这些案例旨在帮助学习者掌握Java编程的关键技巧,提升编程能力。 1. **基础语法与数据类型**:Java的基础包括变量声明、数据类型(如整型、浮点型、字符型和布尔型)、运算符、流程控制(如if语句、switch语句、for...
《Java编程案例精解》是一本深入探讨Java编程实践的书籍,其光盘资料包含了丰富的实例代码和教学资源,旨在帮助读者深入理解Java语言的核心概念和技术。这份资料涵盖了从基础语法到高级特性的广泛内容,适合初学者和...
11. **枚举与注解**:枚举是Java中的特殊数据类型,而注解则是一种元数据,可以用于代码的元编程,笔记可能讲解它们的用法和作用。 以上只是对Java基础部分的一些基本概述,实际的"Java基础的详细案例笔记"应该包含...
总之,这个"java数据库开发编程案例之销售管理系统"为学习者提供了一个全面了解Java数据库开发的实践平台,涵盖了从数据库设计、JDBC使用到MVC架构等多个方面,是初学者宝贵的参考资料。通过这个案例,开发者不仅...
Java编程语言作为世界上最流行的编程语言之一,以其面向对象、跨平台和丰富的库支持而闻名。在《java实用编程100例》这...通过学习和实践这些实例,开发者能够逐步精通Java编程,并为更复杂的应用开发打下坚实的基础。
总之,"java数据库开发编程案例之网络购物"是一个全面的学习资源,涵盖了从基础的Java编程到高级的数据库交互、Web开发以及系统架构等多个方面。通过这个案例,你可以逐步建立起实际开发中的技能和经验,为以后的...
本书提供了大量的源程序、素材,提供了相关的模块库、案例库、素材库、题库等多种形式辅助学习资料,还提供迅速及时的微博、qq、论坛等技术支持。 本书内容详尽,实例丰富,非常适合作为零基础学习人员的学习用书...
《Java并发编程源码》是深入理解Java多线程编程技术的重要参考资料,它包含了实际案例和源代码,有助于开发者在实践中提升并发编程能力。这里主要围绕"并发"和"源码"这两个关键标签,详细讲解Java并发编程的核心知识...
在深入探讨《JAVA学习书籍_java案例开发集锦》这一资源之前,我们首先需要理解JAVA作为一门编程语言的核心价值。JAVA,由Sun Microsystems的詹姆斯·高斯林于1995年发布,是一种广泛应用于企业级应用、移动应用、...
《Java完美编程(第三版)》是一本专为Java初学者和进阶者精心编写的教程,...总的来说,《Java完美编程(第三版)》是一本内容详实、涵盖广泛的Java学习指南,无论你是Java新手还是有一定经验的开发者,都能从中受益匪浅。
《Java 实效编程百例》是一本专注于Java编程实践的书籍,旨在通过丰富的实例来提升开发者在实际项目中的技能和效率。在这个压缩包中,包含了两个文件:www_sj00_com.txt和Javasjoxoambao,它们可能是书中的一些代码...