- 浏览: 470077 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (135)
- javascript (43)
- struts (3)
- webWork (0)
- hibernate (2)
- EJB (0)
- Spring (2)
- XML (2)
- Oracle (4)
- Mysql (0)
- C (0)
- C++ (0)
- 网络 (0)
- linux (4)
- java (28)
- 设计模式 (0)
- java 代理模式 (2)
- jsp&Servlet (2)
- Tomcat (5)
- 算法设计 (2)
- 操作技巧 (1)
- HTML (5)
- Ajax (2)
- JScript Deviations from ES3 (14)
- Eclipse (1)
- log4J (2)
- ant (1)
- HTTP (4)
- project (1)
- SqlServer (4)
- 数据仓库 (0)
最新评论
-
u012526168:
header的域名是大小写敏感的.http://stackov ...
HTTP 请求报头详解 -
junes_yu:
这样的方法有问题哦正确方法如下:document.onkeyd ...
javascript 屏蔽F5,BackSpace,IE的刷新,右键功能 -
xunke515:
第二个,如果要带顺序的话,new个treeset也可以吧.
两种方法删除ArrayList里重复元素 -
bangyulin:
java 潜拷贝和深拷贝 -
hecongqi:
谢谢,写得很好,学到知识了
浅谈Java代理机制
import java.lang.reflect.*; public class BeanUtil2{ /** @parameter Object obj1,Object obj2 @return Object 用到反射机制 此方法将调用obj1的getter方法,将得到的值作为相应的参数传给obj2的setter方法 注意,obj1的getter方法和obj2方法必须是public类型 */ public static Object CopyBeanToBean(Object obj1,Object obj2) throws Exception{ Method[] method1=obj1.getClass().getMethods(); Method[] method2=obj2.getClass().getMethods(); String methodName1; String methodFix1; String methodName2; String methodFix2; for(int i=0;i<method1.length;i++){ methodName1=method1[i].getName(); methodFix1=methodName1.substring(3,methodName1.length()); if(methodName1.startsWith("get")){ for(int j=0;j<method2.length;j++){ methodName2=method2[j].getName(); methodFix2=methodName2.substring(3,methodName2.length()); if(methodName2.startsWith("set")){ if(methodFix2.equals(methodFix1)){ Object[] objs1=new Object[0]; Object[] objs2=new Object[1]; objs2[0]=method1[i].invoke(obj1,objs1);//激活obj1的相应的get的方法,objs1数组存放调用该方法的参数,此例中没有参数,该数组的长度为0 method2[j].invoke(obj2,objs2);//激活obj2的相应的set的方法,objs2数组存放调用该方法的参数 continue; } } } } } return obj2; } } 再建一个javabean,并测试 import java.lang.reflect.*; public class User { private String name; private String id; public void setName(String name){ this.name=name; } public String getName(){ return this.name; } public void setId(String id){ this.id=id; } public String getId(){ return this.id; } public static void main(String[] args) throws Exception{ User u1=new User(); u1.setName("zxb"); u1.setId("3286"); User u2=new User(); u2=(User)BeanUtil2.CopyBeanToBean(u1,u2); System.out.println(u2.getName()); System.out.println(u2.getId()); } }
发表评论
-
Java 生成可执行exe
2011-01-06 09:18 2652第一步:完成Java GUI程序 在Eclipse下, ... -
ISO 8859 语言字符集详解
2008-10-07 14:14 2938ISO/IEC 8859-1,又称Latin-1 ... -
Unsupported major.minor version
2008-07-22 13:40 2532当你在编译Java时,遇到Unsupported major. ... -
两种方法删除ArrayList里重复元素
2008-07-10 16:00 172191.方法一: /** List order not mai ... -
java compileClassLoader
2008-07-01 21:15 1001import java.io.*; /* A Co ... -
java runtime.exec() 的讲解(转贴)
2008-07-01 20:59 14047那就首先说点Runtime类吧,他是一个与JVM运行时环境有关 ... -
JDK5.0以上版本的特殊用途(转贴)
2008-07-01 16:29 1425jinfo:可以输出并修改运 ... -
提高java程序性能 (转贴)
2008-07-01 16:00 1468下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAV ... -
Java 中生成数字证书(转贴)
2008-07-01 15:52 28861、创建证书 Java 中的 ... -
java虚拟机参数2 (转贴)
2008-06-29 17:22 1604JVM配置参数中文说明: ------------------ ... -
java虚拟机参数1 (转贴)
2008-06-27 17:14 1257下面的讨论以Windows平台的Sun MicroSystem ... -
java 生成excel
2008-06-24 17:16 8698java 生成excel 示例代码 //** *** ... -
java 陷阱 3 最后的笑声
2008-06-20 21:28 1219下面的程序打印的内容? Java代码 public cla ... -
java 陷阱2 动物状元
2008-06-20 21:27 932Java代码 下面的java ... -
java 陷阱 1 增量
2008-06-20 21:25 1224下面的程序对一个变量重复的进行增量操作,然后打印它的值,那么打 ... -
classloader 总结
2008-06-20 20:59 1604classloader对我来说一直都是很神秘的东东,这两天一直 ... -
classloader 热部署
2008-06-20 20:56 4308关键字: classloader 热部署 这两天一直在学习一 ... -
CompilingClassLoader
2008-06-20 20:54 1113import java.io.*; /* ... -
java 动态加载
2008-06-20 20:51 1922package com.cxz.thinking.act10; ... -
两段java代码的比较
2008-06-06 12:45 1177import java.util.ArrayList; ...
相关推荐
Java没有内置的深拷贝机制,但可以通过反射实现。假设我们有两个 `Person` 类的实例 `person1` 和 `person2`,我们想要将 `person1` 的属性值复制到 `person2`: ```java public static void copyBeanProperties...
由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在运行时直接生成字节码来转换类,在首次生成后,后续...
总的来说,Simple-Bean-Utility通过提供一系列对Java Bean的反射操作,降低了开发难度,提高了代码质量,是Java开发者的得力工具。在日常工作中熟练掌握并运用此库,无疑可以提升开发效率,让Java Bean的处理变得...
它使用反射机制实现,通过getter和setter方法进行属性的读写。其优点在于简单易用,但缺点是在大量复制操作时性能较低,因为每次复制都需要进行反射调用。 PropertyUtils是Apache Commons BeanUtils的扩展,它增强...
7. **性能优化**:MapStruct使用高效的代码生成,因此其性能通常优于基于运行时反射的映射库,如Dozer或ModelMapper。 8. **最佳实践**:在大型项目中,通常建议将映射接口组织在单独的模块或包中,以保持代码的...
Java实现不同的类的属性之间...这篇文章讲解了如何使用 Java 实现不同的类的属性之间相互赋值,使用了 Java 的反射机制来实现属性之间的赋值。这种方法可以帮助我们在开发过程中快速实现属性之间的赋值,提高开发效率。
17. 反射允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。 18. Java序列化用于将对象转换为字节序列,便于存储和网络传输。当需要持久化对象或跨网络传输时需要序列化。 19. 克隆用于复制对象...
- 其核心功能包括:自动类型转换,属性值的复制(Bean-to-Bean Copy),以及对Java Beans的反射操作。 - 版本1.7.0可能包含了一些性能优化和bug修复,具体细节需要查看该版本的发布说明。 2. **Apache Commons ...
在Java编程中,"util"类通常指的是工具类,这些类包含了各种常用的功能,方便开发者在项目中快速实现特定功能,提高代码复用性。以下是对给定的压缩包文件中涉及的一些工具类的详细说明: 1. **BeanTool.java**: ...
ABCAnother Bean Copier.本来想自己用反射来做一个,因为cglib使用了动态字节码生成,所以...2. 性能更好BeanCopy是一个比较常用的操作,我也自己通过反射实现了一个BeanCopy,经过调研,cglib的性能是最好的。1,000
在Java开发中,Apache Commons BeanUtils库是一个非常实用的工具,它提供了许多便捷的方法来处理JavaBean对象,包括属性的复制、设置和获取等。然而,就像标题所指出的,“使用BeanUtils操作属性的一个小坑”,在...