- 浏览: 468233 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (371)
- Java (44)
- Flex (25)
- Design Pattern / UML (5)
- JVM (14)
- Software Engineer (4)
- Testing (30)
- Web Backend (60)
- Linux (7)
- Database (11)
- SOA (28)
- English (6)
- FX (5)
- SAP Support (25)
- SAP Development (5)
- SAP Impl & Oprn (8)
- Articles (15)
- Music (4)
- Recipe (14)
- Multi-thread (4)
- Lucene (2)
- CS basic / Algorithm (12)
- Tour (3)
- C C++ (21)
- Others (10)
- Code Repository C++ (1)
- Code Repository Java (1)
- Code Repository Algorithm (1)
- Code Repository SQL (1)
- Web Frontend (4)
最新评论
-
xiangxm:
Java 强引用、 软引用、 弱引用、虚引用 -
nml-lyb:
123
Mule 的第一个例子 -
nml-lyb:
http://www.baidu.com
Mule 的第一个例子 -
white___ant:
...
Java 强引用、 软引用、 弱引用、虚引用 -
joeyon:
...
Java NIO介绍
/** * Parse an object to another object with the same name * * @param org -> * Original Object * @param tar -> * Target Object Class * @return */ public static Object transformSameClass(Object org, Class tarClz) { if (org == null) return null; Object tar = null; try { tar = tarClz.newInstance(); // Class tarClz = tar.getClass(); Class orgClz = org.getClass(); Method[] tarMethods = tarClz.getMethods(); Method[] orgMethods = orgClz.getMethods(); LinkedList orgMethodsList = new LinkedList(); for (int i = 0; i < orgMethods.length; i++) { String tmpMethodName = orgMethods[i].getName(); if (tmpMethodName.startsWith("get") && !tmpMethodName.startsWith("getClass")) { orgMethodsList.add(orgMethods[i]); } } Class[] parameterTypes = new Class[1]; Object[] arguments = new Object[1]; for (int i = 0; i < tarMethods.length; i++) { String tarMethod = tarMethods[i].getName(); if (tarMethod.startsWith("get") && !tarMethod.startsWith("getClass")) { for (int j = 0; j < orgMethodsList.size(); j++) { Method orgMethod = (Method) orgMethodsList.get(j); String orgMethodStr = orgMethod.getName(); if (tarMethod.equalsIgnoreCase(orgMethodStr)) { orgMethodsList.remove(j); // remove from list, optimize next loop Object field = orgMethod.invoke(org, null); if (field != null) { if (tarMethods[i].getReturnType().equals(orgMethod.getReturnType())) { parameterTypes[0] = orgMethod.getReturnType(); arguments[0] = field; // keep the same class type } else if (tarMethods[i].getReturnType().equals(Long.class) && orgMethod.getReturnType().equals(Integer.class)) { // parse integer to long parameterTypes[0] = Long.class; arguments[0] = new Long(Integer.parseInt(field.toString())); } else if (tarMethods[i].getReturnType().equals(Integer.class) && orgMethod.getReturnType().equals(Long.class)) { // parse long to Integer parameterTypes[0] = Integer.class; arguments[0] = new Integer(Integer.parseInt(field.toString())); } else if (tarMethods[i].getReturnType().equals(boolean.class) && orgMethod.getReturnType().equals(Boolean.class)) { // parse boolean parameterTypes[0] = boolean.class; arguments[0] = field; } else if (tarMethods[i].getReturnType().equals(Boolean.class) && orgMethod.getReturnType().equals(boolean.class)) { // parse Boolean parameterTypes[0] = Boolean.class; arguments[0] = field; } else { break; } Method med = tarClz.getMethod(StringUtil.replaceStringWithSet(tarMethod), parameterTypes); med.invoke(tar, arguments); } break; } } } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } return tar; }
/** * Long fields (Number) passed from flex is null, but changed to '0' in Java. This method is to parse that fields * back to Null * * @param obj * Object that contains Long Type field * @return Object */ public static Object paser0FieldsToNull(Object obj) { if (obj == null) return null; Class clz = obj.getClass(); Object retObj = obj; Method[] methods = clz.getMethods(); Class[] parameterTypes = new Class[1]; for (int i = 0; i < methods.length; i++) { Class retType = methods[i].getReturnType(); if (retType.equals(Long.class) || retType.equals(Integer.class)) { parameterTypes[0] = retType; String name = methods[i].getName(); Object field; try { field = methods[i].invoke(obj, null); if (field != null && !name.equals("getVersion")) { // version=0 is correct Long val = new Long(field.toString()); if (val.equals(new Long(0))||val.equals(new Integer(0))) { if (log.isDebugEnabled()) log.debug("==> This field value is 0, and will parse to Null: " + name); // Method med = clz.getMethod(name.replace("get", "set"), parameterTypes); Method med = clz.getMethod(StringUtil.replaceStringWithSet(name), parameterTypes); Object[] arguments = new Object[1]; arguments[0] = null; med.invoke(retObj, arguments); } } } catch (Exception e) { log.error(e.getMessage()); if (log.isDebugEnabled()) { e.printStackTrace(); } } } } return retObj; }
发表评论
-
java8 Stream Lazy 解释 (非实现原理)
2015-07-22 07:49 1584http://blog.csdn.net/dm_vincen ... -
java8 系列2 深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)
2015-07-22 07:00 2481http://zh.lucida.me/blog/java ... -
java8 系列1 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
2015-07-22 06:58 1068http://zh.lucida.me/blog/java- ... -
Java 8 Stream探秘 具体实现
2015-07-22 06:31 896http://colobu.com/2014/11/18/J ... -
Arrays.asList() 的了解
2015-07-21 23:05 1172为什么Arrays.asList() 返回的list是 i ... -
java8 Lambda expressions
2015-07-14 13:09 879The single most important chan ... -
java8 new features
2015-07-08 02:06 701http://www.javacodegeeks.com/2 ... -
ReentrantLock与synchronized
2014-09-02 23:34 550http://uule.iteye.com/blog/148 ... -
PriorityQueue的使用
2014-05-29 12:14 962http://blog.csdn.net/yangzhon ... -
java的移位操作详解,左移和右移 << >>, 补码计算
2014-04-17 10:28 808---------------------补码--- ... -
深入Java集合学习系列:ArrayList的实现原理
2014-02-13 09:04 566http://zhangshixi.iteye.com/bl ... -
java集合类 ------------ 实现 细节
2014-02-12 23:12 534深入Java集合学习系列:ArrayList的 ... -
两种简单的方式快速实现hashCode 和 equals方法
2014-02-04 10:46 647http://hi.baidu.com/coolcat_p ... -
集合类 Set
2013-12-30 03:50 504http://www.cnblogs.com/yuchao ... -
java1.5新特性
2013-10-23 10:59 6711.自动包装和解包(Autoboxing and unboxi ... -
正则表达式30分钟入门教程
2013-10-22 00:21 543http://blog.csdn.net/cumt168/a ... -
总结Java方法(函数)传值和传引用的问题
2013-09-16 08:38 614http://java.chinaitlab.com/bas ... -
有状态,无状态对象是什么概念
2013-06-21 06:00 1129http://blog.csdn.net/showwair/ ... -
Dom4j的使用(全而好的文章)
2013-06-09 21:12 541http://xhy0422.iteye.com/blog/ ... -
serialVersionUID 用来表明类的不同版本间的兼容性
2013-06-03 23:12 816http://blog.csdn.net/hulefei29 ...
相关推荐
在《Java Reflection in Action》这本书中,作者深入探讨了这一主题,帮助开发者理解并有效地利用Java反射机制。这本书是2005年出版的英文版,对于想要提升Java编程技能,特别是对动态类型和元编程感兴趣的开发者来...
Java Reflection in Action这本书作为Java反射机制的经典之作,详细介绍了反射技术的应用和相关的概念基础,是Java开发者的必备书籍。 首先,反射允许开发者在不知道对象具体类型的情况下,通过类名获取类类型,...
本书《Java Reflection in Action》深入浅出地讲解了Java反射技术的各种应用场景和技术细节。书中通过一系列生动的例子展示了如何安全有效地使用反射技术解决实际问题。例如: 1. **使用反射进行动态代理**:介绍了...
《Java Reflection in Action》这本书深入探讨了这一主题,为开发者提供了理解和运用反射的强大工具。这本书包含了PDF版的全文以及示例源代码,帮助读者通过实践来学习。 1. **反射基础**: - 反射API:`java.lang...
《Java Reflection In Action》这本书深入探讨了这个主题,对于理解和掌握Java动态性有着极大的帮助。以下是关于Java反射的一些关键知识点: 1. **反射基础**:反射API主要包括`java.lang.Class`、`java.lang....
Java Reflection是Java提供的用于在运行时获取类、接口、方法、字段等信息的机制。在本论文中,作者利用反射机制开发了一个能够自动逆向分析Java源代码或编译后的.class文件的解析器。反射在动态语言编程中有着广泛...
Java Reflection in Action Java Reflection in Action is unique in presenting a clear account of all the cool things you can do with reflection, and at the same time providing the sound conceptual basis...
Java 反射(Reflection)是Java编程语言的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、方法、字段等)并直接操作对象的内部属性。这为开发者提供了强大的灵活性,能够在不预先知道具体类的情况下...
《JAVA反射在行动》这本书由Ira R. Forman和Nate Forman撰写,由MANNING出版社出版,是一本深入探讨Java反射机制及其应用的权威指南。反射是Java语言的一项强大特性,允许运行时检查类的信息并操作类的对象,这在很...
### Java反射机制详解 #### 一、Java反射机制概述 反射是Java编程语言的一个关键特性,它赋予了Java程序在运行时自我检查的能力,并能够直接操纵程序内部的属性。通过反射,开发者可以在运行时获取类的信息(如...
"基于Java Reflection的数据库访问通用模型设计与实现" 本文提出了基于Java Reflection机制和面向接口的编程思想,设计并实现了一款Java数据库访问通用模型,该模型具有适用范围广、轻量级、可扩展性好等特点,可以...
《Java Reflection in Action》一书由Ira R. Forman和Nate Forman共同撰写,旨在帮助读者深入理解Java反射机制的核心概念和技术细节,并通过一系列实用案例展示如何有效地利用反射技术来解决实际问题。 #### 二、...
### Java反射经典实例详解 #### 一、引言 反射是Java编程语言中的一个重要特性,它允许程序在运行时检查自身结构(如类、字段、方法等),并且可以在运行时调用任意一个类的成员(包括私有成员)。这一特性为Java...
Java Reflection (JAVA反射.mht